X-man

导航

hdu 4506 小明系列故事——师兄帮帮忙

#include<stdio.h>
#include<string.h>
#define mod 1000000007
int a[10100];
int b[10100];
int multy(int q,int n)
{
    int base=q;
    int ret =1;
    while(n>0)
    {
        if(n&1)ret=(long long)ret*base%mod;
        n>>=1;
        base=(long long)base*base%mod;
    }
    return ret;
}
int main()
{
    int _case;
    int n,t,k;
    int i;
    scanf("%d",&_case);
    while(_case--)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        scanf("%d %d %d",&n,&t,&k);
        for(i=0;i<n;i++)
        scanf("%d",&a[i]);
        int tmp=t;
        t=t%n;//a[i]的循环变换
        for(i=0;i<n-t;i++)
            b[i+t]=a[i];
        int j=i;
        for(;i<n;i++)
            b[i-j]=a[i];
       /* for(i=0;i<n;i++)
        printf("%d\n",b[i]);*/
        int ans=multy(k,tmp);
        for(i=0;i<n;i++)
        b[i]=(long long)b[i]*ans%mod;
        printf("%d",b[0]);
        for(i=1;i<n;i++)
        printf(" %d",b[i]);
        printf("\n");
    }
    return 0;
}

 

posted on 2013-05-29 17:42  雨钝风轻  阅读(221)  评论(0编辑  收藏  举报