对于这个题目一开始直接想到的是暴力枚举,然后不仅复杂还容易出错,直到参考了y总的思想是真的简单
主要思想就是第N个数字对应的值就是其指数的二进制表示
如果k的第i个指数存在,那么他的第i个指数对应的二进制表示为1,否则为0
那么对第n个数字转换成二进制的值就是k的各个位置上的指数的取值
代码
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int k=scanner.nextInt();
int n=scanner.nextInt();
int res=0;
for(int i=0;i<10;i++){
int m=n >>i ;
if((m&1)==1){
res+=Math.pow(k, i);
}
}
System.out.println(res);
}
}