https://i2.wp.com/eblogarithm.com/wp-content/uploads/2017/08/Codeforces-Round-419-Div-1-problem-B-Karen-and-Test-Solution-In-CC1.png?fit=640%2C360

Codeforces Round #419 (Div. 1), problem: (B) Karen and Test Solution In C/C++

#include <cstdio>
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
#define ll long long
const int N=200010;
const ll M=1000000007ll;
ll n,a[N],e[N],re[N];
ll suan(ll x,ll y){
ll t=1;while(y){if(y&1)t=t*x%M;x=x*x%M;y>>=1;}return t;
}
ll work(ll x,ll y){
if(y==0)return 1;
return e[x]*re[x-y]%M*re[y]%M;
}
int main(void){
ll i;
scanf(“%I64d”,&n);
e[0]=1;for(i=1;i<=n;i++)e[i]=e[i-1]*i%M;
re[0]=1;for(i=1;i<=n;i++)re[i]=re[i-1]*suan(i,M-2)%M;
for(i=1;i<=n;i++)scanf(“%I64d”,a+i);
if(n==1){cout<<a[1];return 0;}
if(n%2==1){for(i=1;i<n;i++){if(i%2==1)a[i]=(a[i]+a[i+1])%M;else a[i]=(a[i]-a[i+1]+M)%M;}n–;}
ll ans=0;
for(i=n/2;i>=1;i–){
ans=(ans+a[i*2-1]*work(n/2-1,i-1)%M)%M;
if(n%4==0)ans=(ans-a[i*2]*work(n/2-1,i-1)%M+M)%M;
else ans=(ans+a[i*2]*work(n/2-1,i-1)%M+M)%M;
}
cout<<(ans+M)%M;
return 0;
}

(Visited 10 times, 1 visits today)



There are no comments

Add yours

Leave a Reply

%d bloggers like this: