我叫张小黑
张小黑的挣扎生活
posts - 66,  comments - 109,  trackbacks - 0
 1#include<iostream>
 2using namespace std;
 3#define M 98765431
 4#define Max_N 50000
 5int N,T,sum=0;
 6int cows[Max_N];
 7int t[32];
 8__int64 a,b;
 9int D_to_B(int x)
10{
11    int i=0;
12    while(x>=1){
13        t[i++]=x%2;
14        x/=2;}
15    return i;
16}
17void Multi(__int64 a[2][2],__int64 b[2][2])//矩阵a*b
18{
19    __int64 c[2][2];
20    int i,j,h;
21    memset(c,0,sizeof(c));
22    for(i=0;i<2;i++)
23        for(j=0;j<2;j++)
24            for(h=0;h<2;h++){
25                c[i][j]+=M+a[i][h]*b[h][j];//防止c[i][j]<0的情况
26                c[i][j]%=M;}
27    for(i=0;i<2;i++)
28        for(j=0;j<2;j++)
29            a[i][j]=c[i][j];
30}
31void Multi_k(__int64 a[2][2],int x)//a^x
32{
33    int k,i,j;
34    __int64 temp[2][2]={1,0,0,1};
35    k=D_to_B(x);//把x转为二进制
36    for(i=k-1;i>=0;i--){
37        Multi(temp,temp);
38        if(t[i]==1)Multi(temp,a);
39    }
40    for(i=0;i<2;i++)
41        for(j=0;j<2;j++)
42            a[i][j]=temp[i][j];
43}
44void compute_ab()
45{
46    __int64 A[2][2]={N-1,0,1,-1};
47    if(T==1){a=0;b=1;return;}
48    Multi_k(A,T-2);//求bT-1的一步,A^T-2
49    b=(A[1][0]*(N-1)+A[1][1])%M;//这是bT-1,用来求aT的,aT=(N-1)*bT-1
50    a=((N-1)*b)%M;
51    b=(A[1][0]*(N-1)*(N-1)+A[1][1]*(N-2))%M;//利用bT-1求bT
52}
53void solve()
54{
55    int i;
56    __int64 sum_i,result;
57    for(i=0;i<N;i++){
58        sum_i=(sum+M-cows[i])%M;//sum除了第i头牛
59        result=(b*sum_i+a*cows[i])%M;
60        printf("%I64d\n",result);}
61}
62int main()
63{
64    /*freopen("1.in","r",stdin);
65    freopen("3.ans","w",stdout);*/
66    int i;
67    scanf("%d%d",&N,&T);
68    compute_ab();
69    for(i=0;i<N;i++){
70        scanf("%d",&cows[i]);
71        cows[i]%=M;
72        sum+=cows[i];
73        sum%=M;}
74    solve();
75    return 0;
76}
77
posted on 2008-03-05 17:03 zoyi 阅读(209) 评论(0)  编辑 收藏 引用 所属分类: acm

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


欢迎光临 我的白菜菜园

<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(8)

随笔分类

随笔档案

文章档案

相册

acmer

online judge

队友

技术

朋友

搜索

  •  

最新评论

阅读排行榜

评论排行榜