NYOJ----次方求模
阿新 • • 發佈:2022-05-05
次方求模
時間限制:1000 ms | 記憶體限制:65535 KB
難度:3
描述
求a的b次方對c取餘的值
輸入第一行輸入一個整數n表示測試資料的組數(n<100)
每組測試只有一行,其中有三個正整數a,b,c(1=<a,b,c<=1000000000)輸出輸出a的b次方對c取餘之後的結果樣例輸入
3
2 3 5
3 100 10
11 12345 12345
樣例輸出
3
1
10481
一眼就可以看到,資料很大,對於O(n)的時間複雜度,顯然是過不了的....採用乘方去模的。。。比採用快速求冪要好的多.....貼下程式碼吧!!
#include<iostream> using namespace std; int main() { long long n, a,b,c,ans; cin>>n; while(n--) { cin>>a>>b>>c; a%=c; ans=1; while(b) { if(b&1) { ans*=a; ans%=c; } a*=a; a%=c; b>>=1; } cout<<ans<<endl; } return 0; }