(牛客第二场)G.判正误(快速幂)
判正误
http://www.nowcoder.com/questionTerminal/327a56cada244fc79c7d61936624989c
(牛客第二场)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; }