首页 > 其他 > 详细

51 NOD 1013 3的幂的和

时间:2017-10-26 20:39:55      阅读:237      评论:0      收藏:0      [点我收藏+]

做法:快速幂+求逆元取模

因为ans=((3^(n+2))/2)%P

而ans%P/2!=ans/2%P

所以由费马小定理当gcd(a,p)==1&&P为质数时,a^(p-1)≡1(mod p)可得:ans*(p+1)/2≡ans/2  (%p)

然后就可以美滋滋地对ans取模辣

Code:

技术分享
 1 #include <cstdio>
 2 inline int read()
 3 {
 4     register int f=1,k=0;register char c=getchar();
 5     while (c<0||c>9)c==-&&(f=-1),c=getchar();
 6     while (c>=0&&c<=9)k=k*10+c-0,c=getchar();
 7     return k*f;
 8 }
 9 const long long MOD=1000000007;
10 int main()
11 {
12     register int n=read()+1;register long long t=3,ans=1;
13     while (n)
14     {
15         if(n&1)ans=ans*t%MOD;
16         t=t*t%MOD;
17         n>>=1;
18     }
19     printf("%lld\n",ans); 
20     ans-=1;
21     printf("%lld\n",ans*500000004%MOD);
22 }
View Code

 

51 NOD 1013 3的幂的和

原文:http://www.cnblogs.com/mczhuang/p/7738949.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!