(牛客第二场)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;
}
全部评论
现在数据变了,取const int Mod=1e9+13;可以过!!
2 回复 分享
发布于 2025-10-22 21:28 河南
为什么取1e9+7过不了,但是只要大于1e9+7都可以过呀??谁能告诉我原因呀
点赞 回复 分享
发布于 2025-11-05 23:06 四川
//res = (res + mm) % mm 我不理解为什么我把注释那行开了反而会错,不去特殊处理可能的负数情况反而能过,有没有懂的解释一下ε=(´ο`*))) 其他步骤都是相同的,数据类型也取了long long
点赞 回复 分享
发布于 2025-10-28 20:45 辽宁
取模相等不一定能说明结果是相等的吧
点赞 回复 分享
发布于 2020-02-16 12:26

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务