@[溪水瑶](/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