求救~~

P2822 [NOIP2016 提高组] 组合数问题

@[溪水瑶](/space/show?uid=211229) 乘法溢出了,得到了错误的结果。20!>2^64>max(long long)。
by WYXkk @ 2019-08-09 19:40:21


酱紫啊
by 溪水瑶 @ 2019-08-09 19:40:55


不对,大概是21!才会爆long long。
by WYXkk @ 2019-08-09 19:41:26


反正会爆的飞起就对了
by WYXkk @ 2019-08-09 19:42:29


不用公式咋推呀
by 溪水瑶 @ 2019-08-09 19:42:51


~~C(n,m)=C(n-1,m-1)+C(n-1,m)~~
by    吾皇 @ 2019-08-09 19:43:34


@[溪水瑶](/space/show?uid=211229) 初始条件C[i][0]=c[i][i]=1,转移C[i][j]=C[i-1][j]+C[i-1][j-1],由于取模是可加的,所以可以一边计算一边取模,最后按题意统计即可
by WYXkk @ 2019-08-09 19:45:14


@[WYXkk](/space/show?uid=130151) ```cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; ll t,n,m,k,sum,a[2010][2010]; int read(){ int sum=0; char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9'){ sum=sum*10+c-'0'; c=getchar(); } return sum; } int main(){ t=read();k=read(); while(t--){ n=read();m=read();sum=0; for(int i=0;i<=n;i++)a[i][0]=a[i][i]=1; for(int i=0;i<=n;i++) for(int j=0;j<=m;j++){ a[i][j]=(a[i][j]%k+a[i-1][j-1]%k+a[i-1][j]%k)%k; if(a[i][j]==0)sum++; } printf("%lld\n",sum); } return 0; } ``` 酱紫的吗??
by 溪水瑶 @ 2019-08-09 20:02:58


@[溪水瑶](/space/show?uid=211229) 大概是的,可能有些细节要改。
by WYXkk @ 2019-08-09 20:05:04


样例都错了
by 溪水瑶 @ 2019-08-09 20:09:12


上一页 | 下一页