8 条题解
-
-1
#include <iostream> #include<string.h> using namespace std; const int maxn=500; int c[maxn][maxn][101]; int ans[maxn]; void add(int x[],int y[],int z[]){ z[0]=max(x[0],y[0])+1; for(int i=1;i<=z[0];i++){ z[i]+=(x[i]+y[i]); z[i+1]+=z[i]/10; z[i]%=10; } while(z[0]>1&&z[z[0]]==0)z[0]--; return; } int main() { int i,j,n,m; cin>>i>>j>>n>>m; int s=max(i,n); c[0][0][0]=c[1][0][0]=c[1][1][0]=1; c[0][0][1]=c[1][0][1]=c[1][1][1]=1; for(int a=2;a<=s;a++){ c[a][0][0]=c[a][a][0]=1; c[a][0][1]=c[a][a][1]=1; for(int b=1;b<a;b++){ add(c[a-1][b-1],c[a-1][b],c[a][b]); } } add(c[i][j],c[n][m],ans); for(int i=ans[0];i>=1;i--)cout<<ans[i]; return 0; }
信息
- ID
- 100
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 802
- 已通过
- 81
- 上传者