HDU ACM 4506 小明系列故事——师兄帮帮忙 ->简单快速幂

来源:互联网 发布:文字录入赚钱软件 编辑:程序博客网 时间:2024/05/02 06:12

分析:t单位时间后i的位置将变化到(i+t)%n位置上,下标i从0开始,之后快速幂完成。

#include<iostream>using namespace std;__int64 f_pow(__int64 a,__int64 b,__int64 mod){__int64 s=1;while(b>0){if(b&1) s=s*a%mod;a=a*a%mod;b>>=1;}return s;}int main(){int T;__int64 n,t,k,ai,a[10005],i;scanf("%d",&T);while(T--){scanf("%I64d%I64d%I64d",&n,&t,&k);for(i=0;i<n;i++){scanf("%I64d",&ai);a[(i+t)%n]=ai*f_pow(k,t,(__int64)1000000007)%1000000007;   //(i+t)%n相当于第t轮后的位置情况}printf("%I64d",a[0]);for(i=1;i<n;i++)printf(" %I64d",a[i]);printf("\n");}return 0;}


0 0
原创粉丝点击