Open SJTUerFan opened 2 years ago
同学的代码有点逻辑不通,我重新按照同学的修改了一下下,通过了,可以参考一下。
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; }
include的两个头文件为iostream和cmath
谢谢助教
`#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; } `