首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Weights 高速幂取模的应用

2012-09-14 
Weights 快速幂取模的应用/*题意为求3^0+3^1+3^2...+3^(n-1)。可以先根据等比求和公式写出值。(3^n-1)/2,求

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


热点排行