2020牛客寒假算法基础集训营2——G.判正误【快速幂】(奇葩题?)

题目传送门


题目描述

牛可乐有七个整数 a , b , c , d , e , f , g \text{}a,b,c,d,e,f,g a,b,c,d,e,f,g 并且他猜想 a d + b e + c f = g a^d+b^e+c^f=g ad+be+cf=g 。但 牛可乐无法进行如此庞大的计算。
请验证 牛可乐的猜想是否成立。


输入描述:

第一行一个正整数 T,表示有 T 组数据。
每组数据输入一行七个整数 a , b , c , d , e , f , g \text{}a,b,c,d,e,f,g a,b,c,d,e,f,g
保证 1 ≤ T ≤ 1000 , − 1 0 9 ≤ a , b , c , g ≤ 1 0 9 1\leq T \leq 1000 , -10^9\leq a,b,c,g\leq 10^9 1T1000,109a,b,c,g109
保证不会出现指数和底数同为 0 的情况。


输出描述:

每组数据输出一行,若猜想成立,输出 Yes ,否则输出 No。


输入

2
1 1 4 5 1 4 258
114514 1919810 1 2 3 4 1


输出

Yes
No


说明

1 5 + 1 1 + 4 4 = 258 1^5+1^1+4^4=258 15+11+44=258

11451 4 2 + 191981 0 3 + 1 4 ≠ 1 114514^2+1919810^3+1^4\neq1 1145142+19198103+14=1


题解

  • 直接计算会 TLE / MLE ,考虑在模意义下进行计算,若 a d + b e + c f ≡ g ( m o d M ) a^d+b^e+c^f\equiv g \pmod M ad+be+cfg(modM),则原式有概率成立,多选择一些模数以提高正确率。 ( ? ? ? ? ? ? ? ) (???????) (???????)

AC-Code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
 
const int mod = 1e9 + 7;
 
ll q_pow(ll a, ll n) {
    ll res = 1;
    while (n > 0) {
        if (n & 1)  res = ((res % mod) * a % mod) % mod;
        a = (a * a) % mod;
        n >>= 1;
    }
    return res % mod;
}
 
int main() {
    int T;  cin >> T;
    while (T--) {
        ll a, b, c, e, d, f, g; cin >> a >> b >> c >> d >> e >> f >> g;
        if (q_pow(a % mod, d) + q_pow(b % mod, e) + q_pow(c % mod, f) == g % mod)
            cout << "Yes" << endl;
        else
            cout << "No" << endl;
 
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值