次方求模 XYNUOJ

 

                                                 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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章