QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#228996 | #6137. Sub-cycle Graph | ISYRHH | WA | 83ms | 5236kb | C++14 | 1.1kb | 2023-10-28 14:45:03 | 2023-10-28 14:45:45 |
Judging History
answer
#include<bits/stdc++.h>
#define FOR(i,a,b) for(int i=a,i##i=b;i<=i##i;++i)
#define ROF(i,a,b) for(int i=a,i##i=b;i>=i##i;--i)
using namespace std;
typedef long long ll;
const int N=1e5+7,mod=1e9+7,i2=(mod+1)/2;
ll n,fac[N],ifac[N],m;
inline ll qpow(ll a,ll b){
ll R=1;a%=mod;
for(;b;b>>=1,a=a*a%mod)if(b&1)R=R*a%mod;
return R;
}
inline ll C(int n,int m){
return fac[n]*1ll*ifac[m]%mod*ifac[n-m]%mod;
}
void work(){
scanf("%lld%lld",&n,&m);
if(m>n){
puts("0");
return;
}
if(m==n){
puts("1");
return;
}
ll ans=0,s2=1;
FOR(i,0,min(m,n-m)){
ans+=(i&1?mod-1ll:1ll)*s2%mod*C(n-m,i)%mod*C(n-i-1,m-i)%mod;
if(ans>=mod)ans-=mod;
s2=s2*i2%mod;
}
ans%=mod;
ans=ans*fac[n]%mod*ifac[n-m]%mod;
printf("%lld\n",(ans+mod)%mod);
}
signed main(){
// freopen("dt.in","r",stdin);
int T;
scanf("%d",&T);
*fac=1;
FOR(i,1,N-1)fac[i]=fac[i-1]*1ll*i%mod;
ifac[N-1]=qpow(fac[N-1],mod-2);
ROF(i,N-2,0)ifac[i]=(i+1ll)*ifac[i+1]%mod;
while(T--)work();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 5200kb
input:
3 4 2 4 3 5 3
output:
15 12 90
result:
ok 3 number(s): "15 12 90"
Test #2:
score: -100
Wrong Answer
time: 83ms
memory: 5236kb
input:
17446 3 0 3 1 3 2 3 3 4 0 4 1 4 2 4 3 4 4 5 0 5 1 5 2 5 3 5 4 5 5 6 0 6 1 6 2 6 3 6 4 6 5 6 6 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 8 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 9 0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11...
output:
1 3 3 1 1 6 15 12 1 1 10 45 90 60 1 1 15 105 375 630 360 1 1 21 210 1155 3465 5040 2520 1 1 28 378 2940 13545 35280 45360 20160 1 1 36 630 6552 42525 170100 393120 453600 181440 1 1 45 990 13230 114345 643545 2286900 4762800 4989600 1814400 1 1 55 1485 24750 273735 2047815 10239075 32848200 62370000...
result:
wrong answer 9th numbers differ - expected: '3', found: '1'