解题思路:利用进制转换:将N转化为二进制,例如当k=3,N=4时,N2=010,发现数学规律,即数列第四项为30*0+31*0+32*1,以此类推。
注意事项:注意计算幂函数谨慎使用pow()函数,因为精度问题,我在这里就踩坑了。
参考代码:
/*利用进制转换:将n转化为二进制,再将二进制转化为k进制*/ #include <iostream> #include <cmath> using namespace std; int main (void) { int k,n; cin>>k>>n; int i=0; int n2=0; int a=1; int j=0; while(n!=0) { //转换成二进制 while(j<i) { a*=10; j++; } n2+=n%2*a; i++; n/=2; } int count=0; int g=1; for(int j=0; j<i; j++) {//运用数学规律 count+=g*(n2%10); g*=k; n2/=10; } cout<<count; return 0; }
0.0分
11 人评分