hdu 5793 2016 Multi-University Training Contest 6(快速幂+乘法逆元)

来源:互联网 发布:淘宝发货清单软件 编辑:程序博客网 时间:2024/06/05 10:15
讲道理我也不知道怎么退的公式,花了两个小时打巨表,要不你把每个数结尾的种数写出来,就看到明显规律了。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const long long mod=1e9+7;long long result(long long a,long long b){    long long d,t;    d=1;    t=a;    while (b>0)    {        if (b%2==1)            d=(d*t)%mod;        b/=2;        t=(t*t)%mod;    }    return d;}void Extend_gcd(long long a,long long b,long long &x,long long &y){    if(b==0)    {        x=1,y=0;        return ;    }    Extend_gcd(b,a%b,x,y);    long long r=x;    x=y;    y=r-(a/b)*y;}int main(){    long long t,i,n,m,x,y;    scanf("%lld",&t);    while(t--&&scanf("%lld%lld",&n,&m)!=EOF)    {        long long res=result(m,n+1);        res=((res-1)%mod+mod)%mod;        Extend_gcd(m-1,mod,x,y);        x=(x%mod+mod)%mod;        printf("%lld\n",(x*res)%mod);    }    return 0;}

0 0
原创粉丝点击