2013/8/30
今天做了一道之前做过的多校原题,竟然WA了两次,上次还是一A,看来我是没有真正明白其中缘由:
下面解释一下这个错误是如何造成的:
for(int k=1;;k++)
{
if((i-f[k]<0)&&(i-f1[k]<0))
break;
if(i-f[k]>=0)
p[i]=(p[i]+ans*p[i-f[k]]+mod)%mod; //这句话使得p[i]的范围一直在mod内; 正确
//p[i]+=(ans*p[i-f[k]]+mod)%mod; //这句话是p[i]一直在加上一个在mod范围内的数,而p[i]不一定在mod范围内 错误
ans*=-1;
}