「代码比对」花

正经人的阳间代码:

      if(n==3){printf("%lld
",m);continue;}
		g[3][1][1][1]=m;g[3][1][0][0]=m*(m-1)%mol;g[3][0][1][0]=m*(m-1)%mol;
		g[3][0][0][0]=m*(m-1)%mol*(m-1)%mol;
		for(int i=4;i<=n;i++){
			g[i][0][0][0]=(m-1)*((g[i-1][0][0][0]+g[i-1][0][1][0])%mol)%mol;
			g[i][1][0][0]=(g[i-1][0][1][0]+g[i-1][0][0][0])%mol;
			g[i][0][1][0]=(m-1)*g[i-1][1][0][0]%mol;
			g[i][1][1][1]=g[i-1][1][0][0];
			g[i][0][0][1]=(m-1)*((g[i-1][0][0][1]+g[i-1][0][1][1]))%mol;
			g[i][1][0][1]=(g[i-1][0][0][1]+g[i-1][0][1][1])%mol;
			g[i][0][1][1]=(m-1)*((g[i-1][1][1][1]+g[i-1][1][0][1])%mol)%mol;
			if(i==n)ans=((((ans+g[i][1][1][1])%mol+g[i][0][0][1]%mol)+g[i][1][0][1]%mol)+g[i][0][1][1])%mol;
		}

不正经的阴间代码:

                f[1][1][0] = s;
		for (register int i = 2; i <= n; i++) {
			f[i][1][0] = 1ll * (s - 1) * (1ll * f[i - 1][1][0] + f[i - 1][2][0]) % P;
			f[i][1][1] = 1ll * (s - 1) * (1ll * f[i - 1][1][1] + f[i - 1][2][1] + f[i - 1][3][1]) % P;
			f[i][2][0] = f[i - 1][1][0];
			f[i][2][1] = f[i - 1][1][1];
			f[i][3][1] = f[i - 1][2][0];
		}
		printf("%lld
", (1ll * f[n][1][1] + f[n][2][1] + f[n][3][1]) % P);
原文地址:https://www.cnblogs.com/614685877--aakennes/p/13863796.html