1 solutions
-
0
C :
#include<stdio.h> int main() { int a[31][30]={0}; int i,j; int n,m; scanf("%d %d",&n,&m); a[0][0]=1; for(i=1;i<=m;i++) { a[i][0]=a[i-1][1]+a[i-1][n-1]; a[i][n-1]=a[i-1][0]+a[i-1][n-2]; for(j=1;j<n-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j+1]; } printf("%d\n",a[m][0]); return 0; }C++ :
#include <iostream> #include <algorithm> using namespace std; int n,m; struct juzhen{ int a[40][40]; }x, ans; juzhen cul(juzhen p, juzhen q) { juzhen res; for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) { res.a[i][j]=0; for (int k=1; k<=n; k++) res.a[i][j]+= p.a[i][k]*q.a[k][j]; } return res; } void pow(int p) { for (int i=1; i<=n; i++) ans.a[i][i]=1; while (p) { if (p&1) ans = cul(ans, x); x = cul(x, x); p>>=1; } } int main() { cin>>n>>m; for (int i=1; i<=n; i++) { if (i==1){ x.a[1][2]=1; x.a[1][n]=1; } else if (i==n){ x.a[n][n-1]=1; x.a[n][1]=1; } else{ x.a[i][i+1]=1; x.a[i][i-1]=1; } } pow(m); cout<<ans.a[1][1]<<endl; return 0; }
- 1
Information
- ID
- 16302
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By