题目如图
仔细研究可得出结论:第N个数就是将N转换为二进制数,然后用二进制的每一位乘上该位对应的k的幂次之和。
例如第3个数,3的二进制是11,所以结果就是1 * 3^0 + 1* 3^1。以此类推,下面给出实现代码。
import java.util.Scanner;
public class MiLink {
public static void main(String[] args) {
int k,n,num = 0,i=0,j=0;
Scanner sc = new Scanner(System.in);
System.out.println("依次输入k和N:");
k = sc.nextInt();
n = sc.nextInt();
String N = Integer.toBinaryString(n); //将此数转为二进制字符串
char a[] = N.toCharArray();
for(i = a.length-1,j=0;i>=0;i--,j++)
num += (int) ((int) (a[i]-48) * Math.pow(k,j)); //数字与ASCII码差值为48
System.out.println(num);
}
/**
* output:
* 依次输入k和N:
* 3 100
* 981
*/
}