首页 > 试题广场 >

一的个数

[编程题]一的个数
  • 热度指数:3970 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
NowCoder总是力争上游,凡事都要拿第一,所以他对“1”这个数情有独钟。爱屋及乌,他也很喜欢包含1的数,例如10、11、12……。不仅如此,他同样喜欢任意进制中包含1的数。当然,其中包含1的个数越多他越喜欢。你能帮他统计一下某个数在特定的进制下1的个数吗?

输入描述:
输入有多组数据,每组数据包含一个正整数n (1≤n≤2147483647)和一个正整数r (2≤r≤16)。
其中n为十进制整数,r为目标进制。


输出描述:
对应每组输入,输出整数n转换成r进制之后,其中包含多少个“1”。
示例1

输入

1 2<br/>123 16

输出

1<br/>0
import java.util.Scanner;

public class Main {
    public static String f(int n, int base) {
        if (n == 0) return "";
        return f(n / base, base) + ((n % base) >= 10 ? "" : (n % base));

    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int n = in.nextInt();
            int base = in.nextInt();
            int cnt = 0;
            String s = f(n, base);
            for (int i = 0; i < s.length(); i++) {
                if (s.charAt(i) == '1') cnt++;
            }
            System.out.println(cnt);
        }
    }
}
发表于 2021-06-06 15:21:42 回复(0)