请问好心又帅气的大佬们,为什么不开O2会wa? 以前遇到不开O2过不了的题,往往是因为tle或者mle,为什么这道题是不开O2时第七个点答案错误呢? 代码如下:
#include <stdio.h>
#include <vector>
#include <stdlib.h>
#include <cmath>
#include <algorithm>
#include <map>
#include <time.h>
#include <queue>
#include <iostream>
#include <cstring>
#include <set>
using namespace std;
const int maxv=2010;
const int mod=1e5+3;
const int maxNum=0x7fffffff-10;
const double eps=1e-7;
const double PI=3.1415926535;
typedef long long LL;
inline LL read(){
LL x=0;
char ch=getchar();
while(ch<'0'||ch>'9'){
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x;
}
inline void write(int x)
{
if(!x) putchar('0');
char F[200];
LL tmp=x>0?x:-x ;
if(x<0)putchar('-') ;
int cnt=0 ;
while(tmp>0)
{
F[cnt++]=tmp%10+'0';
tmp/=10;
}
while(cnt>0)putchar(F[--cnt]) ;
putchar('\n');
}
LL sumA[maxv],sumAC[maxv];
LL C[maxv][maxv];
int main()
{
LL a,b,c,d,k,ans=0;
scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&k),sumA[a]=a,sumAC[a+c-k+1]=a+c-k+1;
for(int i=a-1;i>=1;i--) sumA[i]=sumA[i+1]*i%mod;
for(int i=a+c-k+1+1;i<=a+c;i++) sumAC[i]=sumAC[i-1]*i%mod;
C[1][1]=1;
for(int i=0;i<=2000;i++) C[i][0]=1;
for(int i=2;i<=2000;i++)
for(int j=1;j<=2000;j++)
C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
if(k<=d) ans=(ans+C[d][k]*sumAC[a+c])%mod;
if(k<=b) ans=(ans+C[b][k]*sumA[a-k+1])%mod;
for(int i=max((LL)1,k-d);i<=min(k-1,b);i++)
ans=(ans+C[b][i]*C[d][k-i]%mod*sumA[a-i+1]%mod*sumAC[a+c-i])%mod;
printf("%lld",ans);
return 0;
}