n非常大的时候x^n次方的程序实现

it2025-04-19  4

关于n非常大的时候x^n次方的程序实现

1 代码:2 测试代码:3 测试结果:4 注意事项5 参考文献

1 代码:

#include <iostream> #include <cstdio> #define ll long long using namespace std; const int mod = 1000000007; long long e_pow(ll a, ll n) { int i; ll sum; sum = 1; while (n) { if (1 & n) sum = sum * a%mod; a = a * a%mod; n >>= 1;// } return sum; } int main() { ll n; cin >> n; long long sum1 = e_pow(2, n - 1); long long sum2=e_pow(4, n - 1); cout <<( sum1+sum2) % mod<<endl; return 0; }

2 测试代码:

int main() { cin >> n; e_pow(2,n-1); cout << sum%mod; return 0;

3 测试结果:

4 注意事项

long long进入了c++11标准,同样定义为位数不低于64位; 虽然最终答案在 32 位整型范围内,但是计算乘法的时候需要用 64 位整型才不会溢出

5 参考文献

【1】https://blog.csdn.net/qq_41755258/article/details/83240978 【2】https://blog.csdn.net/frank_liuxing/article/details/54022402 【3】http://poj.org/problem?id=3734 【4】https://blog.csdn.net/consciousman/article/details/77935700

最新回复(0)