读书人

Weights 高速幂取模的应用

发布时间: 2012-09-14 11:53:44 作者: rapoo

Weights 快速幂取模的应用

/*题意为求3^0+3^1+3^2...+3^(n-1)。可以先根据等比求和公式写出值。(3^n-1)/2,求该数对p的mod。令(3^n-1)/2=k*x+p.最后推出公式。*/#include <stdio.h>#define p 9999997long long quickmod(long long a,long long  b,long long m){    long long ans=1;    while(b)    {        if(b&1)        {            ans=(ans*a)%m;            b--;        }        b/=2;        a=a*a%m;    }    return ans;}int main(){    long long n;    while(scanf("%lld",&n)==1)    {        int m=quickmod(3,n,2*p);        if(m==0) m=p;        int b=(m-1)%(2*p);        printf("%d\n",b/2);    }    return 0;} 


读书人网 >编程

热点推荐