轉載:牛客練習賽17 c 規律題
阿新 • • 發佈:2018-05-10
ont alt 技術分享 targe Go 註意 輸出 #define 一個
1. 算出長度為n的數組s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007;
2. 執行a = s;
現在問k次操作以後a長什麽樣。
示例1
轉載:https://www.cnblogs.com/zzqc/p/8995135.html
C.
鏈接:https://www.nowcoder.com/acm/contest/109/C
來源:牛客網
題目描述
給定長度為n的數組a,定義一次操作為:1. 算出長度為n的數組s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007;
2. 執行a = s;
現在問k次操作以後a長什麽樣。
輸入描述:
第一行兩個整數n,k(1 <= n <= 2000, 0 <= k <= 1,000,000,000);i
第二行n個整數表示a數組(0 <= a
<= 1,000,000,000)。
輸出描述:
一行n個整數表示答案。
輸入
3 1 1 2 3
輸出
1 3 6示例2
輸入
5 0 3 14 15 92 6
輸出
3 14 15 92 6k
首先註意到這個操作可以用矩陣來表示,設原數組為一個行向量A,k次操作之後得到的行向量B, 轉移矩陣為X,則有A*X
=B ,觀察發現X是一個N*N的上三角矩陣,
可即使使用了快速冪,這個矩陣一次乘法的時間復雜度也不允許接受,因為N<=2000,N^3過於龐大,枚舉了這個矩陣的前幾次方之後發現一個規律,這個矩陣只要知道
第一行的元素就可以推出這個全部的矩陣,每一列都來自於第一行的一個子段,再觀察發現這些數字都是楊輝三角裏的數,準確的說這一行數對應楊輝三角的一列(斜著),
對於X^k,這個矩陣,第一行的元素就是( C(k-1,0) , C(k,1) , C(k+1,2),.....C(k+n-2,n-1)),組合數的公式C(n,r)=C(n,r-1)*(n-r+1)/r,
C(n,r)=C(n-1,r)+C(n-1,r-1),聯立得出C(n,r)=C(n-1,r-1)*n/r,有除法記得取逆元。
1 #include<iostream> 2 #include<cstring> 3 #include<queue> 4 #include<cstdio> 5 #include<stack> 6 #include<set> 7 #include<map> 8 #include<cmath> 9 #include<ctime> 10 #include<time.h> 11 #include<algorithm> 12 using namespace std; 13 #define mp make_pair 14 #define pb push_back 15 #define debug puts("debug") 16 #define LL long long 17 #define pii pair<int,int> 18 #define eps 1e-10 19 double R=6371009; 20 21 LL MOD=1e9+7; 22 LL q[2020]; 23 LL a[2020]; 24 void gcd(LL a,LL b,LL &d,LL &x,LL &y) 25 { 26 if(!b) {d=a;x=1;y=0;} 27 else {gcd(b,a%b,d,y,x);y-=x*(a/b);} 28 } 29 LL inv(LL a,LL n) 30 { 31 LL d,x,y; 32 gcd(a,n,d,x,y); 33 return d==1?(x+n)%n:-1; 34 } 35 int main() 36 { 37 LL n,m,i,j,k; 38 scanf("%lld%lld",&n,&k); 39 for(i=1;i<=n;++i) scanf("%lld",a+i); 40 k--; 41 q[1]=1; 42 for(i=2;i<=n;++i){ 43 q[i]=q[i-1]*((k+i-1)%MOD)%MOD*inv(i-1,MOD); 44 q[i]%=MOD; 45 } 46 //for(i=2;i<=n;++i) q[i]+=q[i-1],q[i]%=MOD; 47 for(i=1;i<=n;++i){ 48 LL tmp=0; 49 for(j=1;j<=i;++j){ 50 tmp+=a[j]*q[i-j+1]; 51 tmp%=MOD; 52 } 53 printf("%lld%c",tmp,i==n?‘\n‘:‘ ‘); 54 } 55 return 0; 56 }
轉載:牛客練習賽17 c 規律題