ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#207985 | #3711. Heavenly Altitudes | three_zero30 | 100 | 1505ms | 16952kb | C++11 | 874b | 2024-08-01 10:52:34 | 2024-08-01 12:42:18 |
answer
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll MOD=1e9+7;
const int N=1e6+2;
ll a[N];
ll f[N];
ll niyuan[N];
ll ans;
ll tn;
ll n,m,cnt;
ll fastpow(ll x,ll deep){
if(deep==1)return x;
ll tmp=fastpow(x,deep/2)%MOD;
if(deep%2==0){
return (tmp*tmp)%MOD;
}
else{
return (((tmp*tmp)%MOD)*x)%MOD;
}
}
ll C(ll m,ll n){//m个里面选n个
return (f[m]*((niyuan[n]*niyuan[m-n])%MOD))%MOD;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>m;
for(int i=m;i>=1;i--){
cin>>a[i];
}
f[0]=1;
niyuan[0]=1;
f[1]=1;
niyuan[1]=1;
for(int i=2;i<=n;i++){
f[i]=(f[i-1]*i)%MOD;
niyuan[i]=fastpow(f[i],MOD-2)%MOD;
}
a[0]=n+1;
tn=0;
ans=1;
cnt=n/m-1;
for(int i=1;i<=m;i++){
ans=(ans*C(a[i-1]-a[i]-1+tn,cnt))%MOD;
tn=(tn+a[i-1]-a[i]-1-cnt);
}
cout<<ans<<endl;
return 0;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1252kb
input:
9 3 1 3 4
output:
30
result:
ok 1 number(s): "30"
Test #2:
score: 10
Accepted
time: 0ms
memory: 1256kb
input:
10 5 1 2 3 4 6
output:
96
result:
ok 1 number(s): "96"
Test #3:
score: 10
Accepted
time: 0ms
memory: 1272kb
input:
1000 125 1 2 4 6 7 8 10 12 13 16 19 24 25 26 28 29 30 31 39 40 41 46 49 52 55 64 65 67 68 77 78 81 8...
output:
131515409
result:
ok 1 number(s): "131515409"
Test #4:
score: 10
Accepted
time: 0ms
memory: 1272kb
input:
999 111 1 2 6 7 10 12 13 15 19 26 29 32 33 52 53 54 57 58 59 60 69 73 78 87 91 101 103 105 106 110 1...
output:
172899290
result:
ok 1 number(s): "172899290"
Test #5:
score: 10
Accepted
time: 38ms
memory: 2824kb
input:
100000 1250 1 4 13 19 26 33 46 53 68 72 78 100 104 115 116 126 129 131 142 150 156 157 160 167 197 2...
output:
821794520
result:
ok 1 number(s): "821794520"
Test #6:
score: 10
Accepted
time: 39ms
memory: 2904kb
input:
99999 11111 1 2 4 5 9 10 11 12 13 14 15 16 17 19 20 21 22 23 25 27 29 31 32 33 34 35 36 39 41 42 43 ...
output:
941657016
result:
ok 1 number(s): "941657016"
Test #7:
score: 10
Accepted
time: 371ms
memory: 16880kb
input:
1000000 1000 1 200 304 310 404 584 622 831 1056 1160 1948 1984 2027 2137 2216 2434 2452 2488 2667 27...
output:
109815619
result:
ok 1 number(s): "109815619"
Test #8:
score: 10
Accepted
time: 366ms
memory: 16952kb
input:
1000000 10000 1 6 8 13 15 28 44 51 56 72 73 83 97 99 105 113 126 130 136 177 183 184 213 218 265 288...
output:
780311646
result:
ok 1 number(s): "780311646"
Test #9:
score: 10
Accepted
time: 364ms
memory: 16872kb
input:
1000000 100 1 742 1563 4179 8008 8716 11385 16121 16656 17170 18699 24004 29401 31368 35296 35580 45...
output:
338576884
result:
ok 1 number(s): "338576884"
Test #10:
score: 10
Accepted
time: 327ms
memory: 15556kb
input:
900000 30000 1 3 6 7 9 10 18 22 24 29 30 32 33 34 39 44 46 54 55 62 63 64 75 78 84 90 93 95 96 99 10...
output:
507088503
result:
ok 1 number(s): "507088503"