1872: 次方求模
時間限制: 1 Sec 內存限制: 64 MB
提交: 32 解決: 19
題目描述
求a的b次方對c取餘的值
輸入
第一行輸入一個整數n表示測試數據的組數(n<100)
每組測試只有一行,其中有三個正整數a,b,c(1=<a,b,c<=1000000000)
輸出
輸出a的b次方對c取餘之後的結果
樣例輸入
<span style="color:black">3
2 3 5
3 100 10
11 12345 12345</span>
樣例輸出
<span style="color:black">3
1
10481</span>
看似很簡單的一道題,但應該運用快速冪求法降低運算時間
附AC代碼
#include <stdio.h>
#include<math.h>
int powM(long long a,long long b,long long c)
{
long long result =1;
while(b>0)
{
if(b%2==1)
result=result*a%c;
a=a*a%c;
b=b/2;
}
return result;
}
int main()
{
int n;
scanf("%d",&n);
while(n<100&&n--)
{
long long a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
long long d;
d=powM(a,b,c);
printf("%d\n",d);
}
return 0;
}