chenxie95 / SJTU_C-_Cource

上交2022小学期 程序设计思想 答疑论坛
1 stars 0 forks source link

函数习题——第十九题快速求幂算法最后一个测试集不过 #11

Open SJTUerFan opened 2 years ago

SJTUerFan commented 2 years ago

`#include using namespace std; int p = 1; long long quickPow(int n, int k) { if (n == 0) return 0; if (k == 0) return 1; if (k == 1) { int res = p n; return res; } else { if (k % 2 == 0) { n = n n; k /= 2; quickPow(n, k); } else { k = (k - 1) / 2; p = n; n = n n; quickPow(n, k); } } }

int main() { int n, k; cin >> n >> k; cout << quickPow(n, k); return 0; } `

zbnlala commented 2 years ago

同学的代码有点逻辑不通,我重新按照同学的修改了一下下,通过了,可以参考一下。

include

include

using namespace std; long long quickPow(int n, int k) { if(n==0) { return 0; } else if(k==0) { return 1; } else if(k%2==0) { return pow(quickPow(n,k/2),2); } else { return n*pow(quickPow(n,k/2),2); } }

int main() { int n, k; cin >> n >> k; cout << quickPow(n, k); return 0; }

zbnlala commented 2 years ago

include的两个头文件为iostream和cmath

SJTUerFan commented 2 years ago

谢谢助教