社区讨论

警示后人(如果你30pts,sub#1AC)

P10112[GESP202312 八级] 奖品分配参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mmc0uank
此快照首次捕获于
2026/03/04 20:37
上周
此快照最后确认于
2026/03/07 13:50
6 天前
查看原帖

警示后人(如果你30pts,sub30pts,sub#00 410WAsub4-10WA,sub#1AC1AC)


在该题中,组合数最大可达到:
(1000500)=2.7028824094543656951561469362598×10299\binom{1000}{500}=2.7028824094543656951561469362598_{\times 10^{299}}
很明显真么大的数longlong longlongunsignedunsigned longlong longlong是存不下,所以,每次计算组合数都要取模1×1091 \times 10^9
原本的代码:
CPP
void init(){
    for(int i=1;i<=2000;i++){
        C[i][0]=1;
        C[i][1]=i;
        for(int j=2;j<=i;j++)
        C[i][j]=C[i-1][j]+C[i-1][j-1];
    }
}
改后的代码:
CPP
void init(){
    for(int i=1;i<=2000;i++){
        C[i][0]=1;
        C[i][1]=i;
        for(int j=2;j<=i;j++)
        C[i][j]=(C[i-1][j]+C[i-1][j-1])%MOD;
    }
}

回复

0 条回复,欢迎继续交流。

正在加载回复...