解题思路:利用进制转换:将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 人评分
【回文数(二)】 (C语言代码)浏览:728 |
这可能是一个假的冒泡法浏览:985 |
剪刀石头布 (C语言代码)浏览:1746 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:575 |
罗列完美数 (C语言代码)浏览:491 |
判定字符位置 (C语言代码)浏览:786 |
众数问题 (C语言代码)浏览:667 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:614 |
【出圈】 (C++代码)简单循环浏览:628 |
字符串的修改 (C语言代码)浏览:1138 |