快速冪~用來作弊的葯水~牛客網


鏈接:https://www.nowcoder.com/acm/contest/90/L
來源:牛客網

    在一個風雨交加的夜晚,來自異世界的不願透露姓名的TMK同學獲得了兩種超強葯水A、B。根據說明書,TMK知道了這兩種葯水的作用:
    (1)葯水A能使人的生命值提高,每飲用1個單位能使他生命值變成原來的x倍,即每飲用p個單位能使他的生命值變成原來的x^p(x的p次方)倍。
    (2)葯水B能使人的能量值提高,每飲用1個單位能使他能量值變成原來的y倍,即每飲用q個單位能使他的能量值變成原來的y^q(y的q次方)倍。
    於是TMK迫不及待地喝下了所有的a個單位的葯水A和b個單位的葯水B,他立馬體會到了自己能力的超強變化,然后他看了接下來的說明書:
    葯水A和葯水B能互相抑制對方的負面效果,一旦生命值提升的倍數和能量值提升的倍數不相等,那么在五個小時后將會發生非常嚴重的后果。
    於是TMK同學慌了,他想知道自己提升的生命值和能量值的倍數是否相等,由於他非常慌張,所以他把計算的重任交給你了。

作為埃森哲公司的一員,你覺得這個問題很簡單,這得益於埃森哲公司分享知識的文化。

   分享知識已成為埃森哲源遠流長的文化。
   埃森哲公司在幫助客戶進行行之有效的知識管理的同時,它的管理層在其內部也進行了成功的知識管理的實踐。如今,在埃森哲,分享知識已成為其源遠流長的文化。在很大程度上,埃森哲公司的成功得益於其強大的知識管理系統。



輸入描述:

第一行一個整數T,代表有T組數據。(1<=T<=5000)
每組數據僅一行,包含四個整數x,a,y,b,意義為題目描述。(1<=x,a,y,b<=10^9)

輸出描述:

每組數據輸出一行"Yes"或"No"(不包含雙引號),表示TMK提升的生命值和能量值的倍數是否相等,相等為"Yes",不相等為"No"。

這題為快速冪模板題

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 using namespace std;
 7 const int mod=1e9+7;
 8 
 9 long long modexp(long long a,long long b,int mod)
10 {
11     long long res=1;
12     while(b>0) {
13         if (b&1) res=res*a%mod;
14         b=b>>1;
15         a=a*a%mod;
16     }
17     return res;
18 }
19 int main() {
20     int t;
21     scanf("%d",&t);
22     while(t--){
23         int x,a,y,b;
24         scanf("%d%d%d%d",&x,&a,&y,&b);
25         long long  temp1=modexp(x,a,mod);
26         long long  temp2=modexp(y,b,mod);
27         if (temp1!=temp2) printf("No\n");
28         else printf("Yes\n");
29     }
30     return 0;
31 }

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM