模板总结归纳:
//快速幂(取模)
// O(logi)
long long pow_mod(long long a, long long i, long long n)
{
if(i == 0) return 1 % n;
int temp = pow_mod(a, i >> 1, n);
temp = temp * temp %n;
if(i & 1) temp = (long long)temp * a % n;
return temp;
}实战模板题 :HDU1061 Rightmost Digit
//HDU1061 Rightmost Digit
#include<iostream>
#include<cstdio>
using namespace std;
long long qpow(long long a, long long b)
{
if(b == 0) return 1;
long long temp = qpow(a, b >> 1);
temp = temp * temp % 10;
if(b & 1) temp = (long long)temp * a % 10;
return temp;
}
int main()
{
int n;
cin >> n;
while(n--)
{
long long a;
cin >> a;
cout << qpow(a, a) << endl;
}
return 0;
}
本文介绍了一种高效的快速幂取模算法实现方法,并通过一个实际的编程问题(HDU1061 RightmostDigit)来展示该算法的应用。快速幂取模算法能够有效地解决大数幂运算中的溢出问题,在竞赛编程和实际应用中非常有用。
&spm=1001.2101.3001.5002&articleId=79747929&d=1&t=3&u=3607b931136d431aa6ed13c9fef218f9)
1820

被折叠的 条评论
为什么被折叠?



