版权声明:版权所有……啊重点是我简直找不到第二个人写比我还多的吐槽-。- https://blog.csdn.net/StrongerIrene/article/details/82733772
焦作赛区的题目 快速幂模板+取模
因为a^b b非常大 b可以取模化简 题目:https://nanti.jisuanke.com/t/31716
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
const int mode = 1000000007;
//a是底数,b是指数,mode是取模数,sum是记录取模的结果
//a是底数,b是指数,mode是取模数,sum是记录取模的结果
typedef long long ll;
ll oula(ll x)
{
ll i, res = x;
for (i = 2; i*i <= x; i++){
if (x%i == 0){
res = res - res / i;
while (x%i == 0)
x /= i;
}
}
if (x>1)res = res - res / x;
return res;
}
ll Mode(ll a, ll b, ll mode)
{
ll sum = 1;
while (b) {
if (b & 1) {
sum = (sum * a) % mode;
b--;
}
b /= 2;
a = a * a % mode;
}
return sum;
}
int main() {
string s; ll a, c, i, ans, tmp, b;
int t; cin >> t;
while (t--) {
c = mode; a = 2;
cin >> s;
ll ans = 0;ll b = 0; tmp = oula(c);
ll len = s.length();
for (i = 0; i<len; i++)
b = (b * 10 + s[i] - '0') % tmp;
b += tmp; b--;
cout<< Mode(a, b, c)<<endl;
}
return 0;
}
参考网址 https://blog.csdn.net/qq_38735931/article/details/82716973
【费马小定理】假如p是质数,且gcd(a,p)=1,那么≡1(mod p),例如:假如a是整数,p是质数,则a,p显然互质(即两者只有一个公约数1),假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。
我们要求,构造一下
所以,有两个mod,mod1=1e9+7,mod2=1e9+6;