#include <bits/stdc++.h> using namespace std; long long n,m,p; struct M{ int x,y; M(int _x, int _y){ x=_x; y=_y; } }; vector<int> plot[100000]; long long w[1000000][2]; void solve() { for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { for(int i1 = 0;i1<m;i1++) { for(int j1= i1;j1<m;j1++) { if( j < i1 || j1 < i) { }else{ plot[i*m+j].push_back(i1*m+j1); } } } } } for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { /* for(int k=0;k<plot[i*m+j].size();k++) { cout<<plot[i*m+j][k]<<" "; } cout<<"\n";*/ w[i*m+j][1]=1; } } for(int v = 1;v<n;v++) { for(int i = 0;i<m;i++) for(int j = i;j<m;j++) w[i*m+j][(v+1)%2]=0; for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { for(int k=0;k<plot[i*m+j].size();k++) { w[plot[i*m+j][k]][(v+1)%2]+=w[i*m+j][v%2]; w[plot[i*m+j][k]][(v+1)%2]%=p; } } } } long long wynik =0; for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { //cout<<w[i*m+j][(n)%2]<<"\n"; wynik+=w[i*m+j][(n)%2]; wynik%=p; } } cout<<wynik%p<<"\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>m>>p; solve(); return 0; }
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #include <bits/stdc++.h> using namespace std; long long n,m,p; struct M{ int x,y; M(int _x, int _y){ x=_x; y=_y; } }; vector<int> plot[100000]; long long w[1000000][2]; void solve() { for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { for(int i1 = 0;i1<m;i1++) { for(int j1= i1;j1<m;j1++) { if( j < i1 || j1 < i) { }else{ plot[i*m+j].push_back(i1*m+j1); } } } } } for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { /* for(int k=0;k<plot[i*m+j].size();k++) { cout<<plot[i*m+j][k]<<" "; } cout<<"\n";*/ w[i*m+j][1]=1; } } for(int v = 1;v<n;v++) { for(int i = 0;i<m;i++) for(int j = i;j<m;j++) w[i*m+j][(v+1)%2]=0; for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { for(int k=0;k<plot[i*m+j].size();k++) { w[plot[i*m+j][k]][(v+1)%2]+=w[i*m+j][v%2]; w[plot[i*m+j][k]][(v+1)%2]%=p; } } } } long long wynik =0; for(int i = 0;i<m;i++) { for(int j = i;j<m;j++) { //cout<<w[i*m+j][(n)%2]<<"\n"; wynik+=w[i*m+j][(n)%2]; wynik%=p; } } cout<<wynik%p<<"\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>m>>p; solve(); return 0; } |