(牛客第二场)G.判正误(快速幂)

链接
有七个整数a,b,c,d,e,f,g,并且猜想。请验证猜想是否成立。

利用快速幂,可以很方便求出,,,,取模后加上看它是否等于g。

为了防止数据中出现对mod取模和对mod取模的结果相等,然而它们的值不相等的情况,可以多取几个质数的模,逐个来试,绕过所有数据,我选了一个1e9+7就过了。

#include <cstdio>
#include <algorithm>
#include <string>
#include <iostream>
const int maxn=1000000007;
using namespace std;
int s;
long long poww(int a,int n){  //快速幂
    int res=1,ans;
    while(n){
        if(n&1) res=a*res%maxn;
        a=a*a%maxn;
        n>>=1;
    }
    if(a==0) return 0;  //底数为零的情况
    return res;
}
int main(){
    ios::sync_with_stdio(false);
    int T;
    cin>>T;
    long long a,b,c,d,e,f,g;
    while(T--){
        cin>>a>>b>>c>>d>>e>>f>>g;
        if(poww(a,d)%maxn+poww(b,e)%maxn+poww(c,f)%maxn==g){
//不过的话可以多取几个模数
            printf("Yes\n");
        }
        else{
            printf("No\n");
        }
    }
    return 0;
}