-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathChef and Strange Operations.cpp
More file actions
44 lines (41 loc) · 947 Bytes
/
Chef and Strange Operations.cpp
File metadata and controls
44 lines (41 loc) · 947 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#define mod 1000000007
using namespace std;
unsigned long long pow(unsigned long long a,unsigned long long b)
{
if(b==0) return 1;
else if(b%2==0) return pow(a*a%mod,b/2);
else return pow(a,b-1)*a%mod;
}
int main()
{
int t;
cin>>t;
while(t--)
{
unsigned long long n,x,m,i,sum=0;
cin>>n>>x>>m;
n=n%mod;
x=x%mod;
m=m%mod;
unsigned long long a[100003]={0};
for(i=1;i<=n;i++)
{
cin>>a[i];
a[i]=a[i]%mod;
}
unsigned long long multiplier=1;
unsigned long long j=0;
for(i=x;i>0;i--)
{
sum=sum%mod;
multiplier=multiplier%mod;
sum=sum+(multiplier*a[i])%mod;
multiplier=(((multiplier*(m+j))%mod)%mod*(pow(j+1,mod-2)%mod))%mod;
j=(j+1)%mod;
}
sum=sum%mod;
cout<<sum<<endl;
}
return 0;
}