两个数 n,m,求 用 m 个 [0,n] 的整数相加使其和为 n 的方案数。
#include <iostream> #include <cstring> #include <sstream> using namespace std; const int N =102; const int mod =1e6; int n,m,f[N][N]; void sov(){ memset(f,0,sizeof f); int i,j,k; for(i=0;i<=n;i++) f[i][1]=1; for(k=1;k<=m;k++) for(j=0;j<=n;++j) for(i=0;i<=j;i++) f[j][k]+=f[j-i][k-1], f[j][k]%=mod; cout<<f[n][m]<<endl; } signed main(){ while(cin>>n>>m,n||m){ sov(); } }