Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>const int M = 128;int d[M][M],A[M][M],K,N,S;void dfs(int x,int y,int col){if(col==K){d[y][x] = 1;return;}dfs((x<<1)+1,y<<1,col+1);dfs(x<<1,(y<<1)+1,col+1);if(col+2<=K)dfs((x<<2)+3,(y<<2)+3,col+2);}void m(int A[][M],int B[][M],int C[][M]){int T[M][M];for(int i = 0 ;i<S;i++)for(int j = 0 ;j<S;j++){T[i][j] = 0;for(int k = 0 ;k<S;k++)T[i][j] += A[i][k]*B[k][j]%12357;}for(int i = 0 ;i<S;i++)for(int j = 0 ;j<S;j++)C[i][j] = T[i][j]%12357;}int main(int argc,char*argv[])