解题思路:
1∗3^0 n=1 对应二进制1 1*3^1+0*3^0 n=2 对应二进制10 1*3^1+1*3^0 n=3 对应二进制11 1*3^2+0*3^1+0*3^0 n=4 对应二进制100 .........................
也就是n对应的二进制的数位从右向左的权值依次是k^0,k^1,……,k^(n-1),对应的二进制的数位如果是1就加上对应权值即可(快速幂是乘上对应权值)。
参考代码:
#include <iostream> using namespace std; int k, n; unsigned int ans, x = 1; // 只有这个类型能过~~难道它比longlong大? int main() { cin >> k >> n; while (n) { if (n & 1) ans += x; x *= k; n >>= 1; } cout << ans << endl; return 0; }
0.0分
5 人评分
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:488 |
买不到的数目 (C++代码)浏览:909 |
WU-小九九 (C++代码)浏览:1713 |
WU-C语言程序设计教程(第三版)课后习题11.12 (C++代码)(想学链表的小伙伴可以看看)浏览:964 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:701 |
Hello, world! (C语言代码)浏览:766 |
字符逆序 (C语言代码)浏览:675 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:545 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:560 |
回文数(一) (C语言代码)浏览:1170 |