【組合數+找規律】codeforces 815B - Karen and Test
Link:http://codeforces.com/problemset/problem/815/B
/*
題意: 給出一個n長度的序列,按op +,- 交換得到下一行序列,直到變成一個數字,求這個數字的值。【具體看Note】
題解: 發現在n為偶數時,n-1個數形成的倒三角,是隔個位相加和,其係數為組合數,例n=4時,前三個的倒三角的末端值為a1+a3,若n=6時,前5個倒三角末端值為a1+2a3+a5,同理。那麼n=4的末端值是a1a2a3和a2a3a4的倒三角的差值,n=6的末端值是a1a2a3a4a5和a2a3a4a5a6的倒三角的和值,所以分類n%4==0 和n%4 == 1。
那n為奇數時,先算一層,其實符號還是從正開始的,在依上計算。特判n=1,n=2,n=3。
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 200005;
const int mod = 1e9+7;
LL a[N];
LL powz[N],inv[N],powinv[N];
void init(){
powz[0] = 0; powz[1] = 1;
inv[0] = 0; inv[1] = 1;
powinv[0] = 0; powinv[1] = 1;
for(int i = 2; i < N; i++){
powz[i] = (powz[i-1]*(LL)i)%mod;
inv[i] = inv[mod%i]*(mod-mod/i)%mod;
powinv[i] = powinv[i-1]*inv[i]%mod;
}
}
LL C(int x, int y){
if(x == 0 || x == y) return 1LL;
return powz[y]*powinv[y-x]%mod*powinv[x]%mod;
}
int main(){
init();
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
scanf("%I64d",&a[i]);
if(n == 1){
printf("%I64d\n",a[1]);
return 0;
}
if(n&1){
LL pre = a[1];
LL op = 1;
for(int i = 2; i <= n; i++){
a[i-1] = (pre+op*a[i]+mod)%mod;
pre = a[i];
op *= -1;
}
n--;
}
if(n == 2){
printf("%I64d\n",(a[1]+a[2])%mod);
return 0;
}
int ff = n/2-1;
LL ans1 = 0, ans2 = 0;
int k = 0, flag = 0;
for(int i = 1; i <= n; i+=2){
ans1 = (ans1+a[i]*C(k,ff)%mod)%mod;
if(k == ff)
flag = 1;
if(flag)
k--;
else
k++;
}
k = 0 , flag = 0;
for(int i = 2; i <= n; i+=2){
ans2 = (ans2+a[i]*C(k,ff)%mod)%mod;
if(k == ff)
flag = 1;
if(flag)
k--;
else
k++;
}
if(n%4 == 0){
printf("%I64d\n",(ans1-ans2+mod)%mod);
}
else{
printf("%I64d\n",(ans1+ans2)%mod);
}
return 0;
}
相關文章
- codeforces 340CTourist Problem(找規律數學題)
- 打表找規律
- HDU 1792 - A New Change Problem(規律,最大不能組合數及其個數)
- HDU 6298 Maximum Multiple(找規律)
- HDU 4951 Multiplication table(找規律)
- codeforces 341C Iahub and Permutations(組合數dp)
- 機器學習之特徵組合: 多非線性規律進行編碼機器學習特徵
- Touring cities (找規律 哈密爾頓迴路)
- HDU5139 Formula (找規律+離線處理)ORM
- HDU 5795 A Simple Nim (SG函式+打表找規律)函式
- LeetCode-6. Z字形變換(找規律)LeetCode
- CodeForces571A. Lengthening Sticks(組合數學-容斥)
- HUNAN -11566 Graduation Examination(找規律)NaN
- HDU-6415 Rikka with Nash Equilibrium (DP/找規律)UI
- Gym - 101532A Subarrays Beauty(位操作找規律)
- HDU 5439 Aggregated Counting(找規律+預處理)
- 【數學】組合數學 - 排列組合
- 動態規劃-硬幣組合數目動態規劃
- Codeforces 869C The Intriguing Obsession:組合數 or dpGUISession
- Codeforces Gym 100548F Color (組合數+容斥)
- Codeforces 895C Square Subsets:狀壓dp【組合數結論】
- 容斥 + 組合數學 ---Codeforces Round #317 A. Lengthening Sticks
- HDU 2897-邂逅明下(博弈-SG函式打表找規律)函式
- QOJ7789-一道位運算找規律好題
- IO流下:位元組流、流操作規律(java基礎)Java
- Codeforces1420 D. Rescue Nibel!(區間,組合數)
- 谷歌大腦神經機器翻譯大規模實驗:尋找最優的超引數組合谷歌
- 組合數學
- 數學規律題,數論知識:hdu1792
- ZOJ Monthly, January 2019 - A Little Sub and Pascal's Triangle(找規律)
- HDU 1847 Good Luck in CET-4 Everybody!(找規律版巴什博奕)Go
- 組合數學筆記-排列與組合筆記
- EMS單號規律與順豐單號規律(C#)C#
- 組織的紀律
- HDU 1847-Good Luck in CET-4 Everybody!(博弈-SG函式/找規律)Go函式
- 組合數問題
- lg組合計數
- 組合數字首和