输入有多组数据,每组数据包含一个正整数n (1≤n≤2147483647)和一个正整数r (2≤r≤16)。
其中n为十进制整数,r为目标进制。
对应每组输入,输出整数n转换成r进制之后,其中包含多少个“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); } } }