LightOJ 1213 Fantasy of a Summation

来源:互联网 发布:打鱼软件开发 编辑:程序博客网 时间:2024/06/01 09:17

题意:

给出一段代码看懂简化下,Lightoj上有好多这种数论题了,这题就是说有k层循环每层遍历n个数字,最后把k层遍历到的数字全部加和取模。

思路:

水题,稍微推下公式就有res=n^k*k/n*sum%mod;就是一共有n^k种组合,每种组合k个数字,平均分给n个数字,之后快速幂解决。

代码:

long long n,m,mod,sum,t;long long power(long long x,long long k,long long mod){long long ans = 1;while(k)    {if(k & 1) ans=ans*x%mod;x=x*x%mod;k >>= 1;}return ans;}int main(){    int i,j,k,kk,x,y,z;    scanf("%d",&k);    kk=0;    while(k--)    {        scanf("%lld%lld%lld",&n,&m,&mod);        sum=0;        for(i=0;i<n;i++){scanf("%lld",&t);sum+=t;}        printf("Case %d: %lld\n",++kk,power(n,m-1,mod)*m%mod*sum%mod);    }    return 0;}















0 0