NYOJ 102

View Code
 1 /*
2 高次方求模:
3 比如a 的 b次方 对c 求模:
4 比如:2^10次方,对3求模
5 10的二进制是1010相当于2^10=2^8*2^2
6 我们看对应的二进制位是否为1,若为1则乘上2^i次方
7 若为0则不乘(注意一个规律:第i位2^i=(2^i-1)*(2^i-1))
8 */
9 #include<iostream>
10 #include<cstdio>
11 using namespace std;
12
13 long long a,b,c;
14 void han()
15 {
16 long long t,s;
17 for(t=a,s=1;b;b>>=1,t*=t,t%=c)
18 if(b&1){s*=t;s%=c;}
19 printf("%lld\n",s%c);
20 }
21
22 int main()
23 {
24 int t;
25 scanf("%d",&t);
26 while(t--)
27 {
28 scanf("%lld%lld%lld",&a,&b,&c);
29 han();
30 }
31 system("pause");
32 return 0;
33 }

 

posted @ 2012-02-18 07:40  知行执行  阅读(164)  评论(0编辑  收藏  举报