#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); } |
English