【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-L】用来作弊的药水

链接:https://www.nowcoder.com/acm/contest/90/L
来源:牛客网

 

输入x,a,y,b,(1<=x,a,y,b<=10^9)判断x^a是否等于y^b

前面同时加log,即判断alogx==blogy

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     int x,a,y,b;
 7     scanf("%d",&n);
 8     while(n--)
 9     {
10         scanf("%d%d%d%d",&x,&a,&y,&b);
11         if(fabs(a*log(x)-b*log(y))<0.1)
12             printf("Yes\n");
13         else
14             printf("No\n");
15     }
16     return 0;
17 }

也可以余上很大的素数

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int mod = 1e9+7;
 4 typedef long long LL;
 5 LL pow(LL a, LL b)
 6 {
 7     LL res = 1;
 8     while(b)
 9     {
10         if(b&1) res=(res*a)%mod;
11         a=(a*a)%mod;
12         b>>=1;
13     }
14     return res;
15 }
16 int main()
17 {
18     LL t, a, b, x, y;
19     cin>>t;
20     while(t--)
21     {
22         scanf("%lld%lld%lld%lld", &x, &a, &y, &b);
23         if(pow(x, a) == pow(y, b))
24             puts("Yes");
25         else
26             puts("No");
27     }
28     return 0;
29 }

 

posted @ 2018-03-24 20:31  LesRoad  阅读(217)  评论(0编辑  收藏  举报