您的位置:首页 > 其它

LightOJ 1213 Fantasy of a Summation

2015-10-01 19:49 513 查看

题意:

给出一段代码看懂简化下,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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: