解题思路:
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 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:567 |
矩形面积交 (Java代码)浏览:1210 |
C语言训练-角谷猜想 (C语言代码)浏览:1673 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:663 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:653 |
数对 (C语言代码)浏览:697 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:535 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:636 |
这是我的第一篇文章浏览:256 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:609 |