#include <bits/stdc++.h> using namespace std; long long n,m,mod,wynik; long long dp[101][101][101]; int main() { scanf("%lld%lld%lld",&n,&m,&mod); for (int i=1; i<=n; i++) { for (int j=1; j<=m; j++) { for (int k=j; k<=m; k++) { if (i==1) { dp[i][j][k]=1; continue; } for (int x=1; x<=k; x++) { for (int y=max(j,x); y<=m; y++) { dp[i][j][k]+=dp[i-1][x][y]; dp[i][j][k]%=mod; } } //cout << i << " " << j << " " << k << endl; //cout << dp[i][j][k] << endl; if (i==n) { wynik+=dp[i][j][k]; wynik%=mod; } } } } printf("%lld\n",wynik); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <bits/stdc++.h> using namespace std; long long n,m,mod,wynik; long long dp[101][101][101]; int main() { scanf("%lld%lld%lld",&n,&m,&mod); for (int i=1; i<=n; i++) { for (int j=1; j<=m; j++) { for (int k=j; k<=m; k++) { if (i==1) { dp[i][j][k]=1; continue; } for (int x=1; x<=k; x++) { for (int y=max(j,x); y<=m; y++) { dp[i][j][k]+=dp[i-1][x][y]; dp[i][j][k]%=mod; } } //cout << i << " " << j << " " << k << endl; //cout << dp[i][j][k] << endl; if (i==n) { wynik+=dp[i][j][k]; wynik%=mod; } } } } printf("%lld\n",wynik); } |