快速幂 cojs 1130. 取余运算

cojs 1130. 取余运算

★   输入文件:dmod.in   输出文件:dmod.out   简单对比
时间限制:10 s   内存限制:128 MB

【题目描述】

 

输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。

【输入格式】

 

输入文件只包含一行,即b  p  k。

【输出格式】

 

所求运算的余数。

【样例输入】

2 10 9

【样例输出】

7
 1 #include<iostream>
 2 using namespace std;
 3 #include<cstdio>
 4 long long b,p,k;
 5 int main()
 6 {
 7     freopen("dmod.in","r",stdin);
 8     freopen("dmod.out","w",stdout);
 9     cin>>b>>p>>k;
10     long long ans=1;
11     b%=k;
12     while(p)
13     {
14         if(p&1)/*如果p是奇数的话,/2就会少乘一次,在这里补上*/
15         {
16             p--;
17             ans=(ans*b)%k;
18         }
19         p>>=1;
20         b=(b*b)%k;
21     }
22     cout<<ans<<endl;
23     fclose(stdin);fclose(stdout);
24 }

 

posted @ 2016-05-21 10:58  csgc0131123  阅读(233)  评论(0编辑  收藏  举报