int multi(int m,int n)//m^n
{
int b = 1;
while(n>0)
{
if(n&1) b = ((long long)b*m)%mod;
n = n >>1;
m = ((long long)m*m)%mod;
}
return (int)b;
}
#include<stdio.h> #include<string.h> const int maxn = 10000+10; const int mod = 1e9+7; __int64 a[maxn]; __int64 b[maxn]; int multi(int m, int n) //m^n { if(m == 0) return 1; __int64 b = 1; __int64 a = m; while(n>0) { if(n&1) b = (b*a)%mod; n = n>>1; a = (a*a)%mod; } return (int)b; } int main() { int T; int n; int t, k; scanf("%d", &T); while(T--) { scanf("%d%d%d", &n,&t,&k); for(int i = 1; i <= n; i++) { scanf("%I64d", &a[i]); } __int64 tmp = multi(k,t); for(int i = 1; i <= n; i++) { a[i] = (a[i]*tmp)%mod; } t %= n; int i, j; for(i = 1,j = t+1; j <= n; i++, j++) { b[j] = a[i]; } int index = i; for(j = 1, i = index; i <= n; j++, i++) { b[j] = a[i]; } printf("%I64d", b[1]); for(i = 2; i <= n; i++) printf(" %I64d", b[i]); printf("\n"); } return 0; }
#include<cstdio> const int maxn = 10000+10; const int mod = 1000000000+7; int a[maxn]; int n,t,k; int mul(int m,int n)//m^n { int b = 1; while(n>0) { if(n&1) b = ((long long)b*m)%mod; n = n >>1; m = ((long long)m*m)%mod; } return (int)b; } int main() { int T; scanf("%d", &T); while(T--) { scanf("%d%d%d", &n, &t, &k); for(int i = 1; i <= n; i++) scanf("%d",&a[i]); int temp = mul(k,t); for(int i = 1; i <= n; i++) { a[i] = ((long long)a[i]*temp)%mod; a[i] = (int)a[i]; } t%=n; int x =(n-t+1) ; if(x>n) x%=n;//printf("%d\n",x); for(int i = x; i <= n; i++) { if(i == x) printf("%d",a[i]); else printf(" %d",a[i]); } for(int i=1; i < x; i++) printf(" %d",a[i]); printf("\n"); //printf("\n");// } return 0; } /* 6 4 1 1 1 2 3 4 4 2 1 1 2 3 4 4 3 1 1 2 3 4 4 4 1 1 2 3 4 4 5 1 1 2 3 4 4 6 1 1 2 3 4 */