【规律】2019ICPC南昌邀请赛 H. Coloring Game

版权声明:转载标注来源喔~ https://blog.csdn.net/iroy33/article/details/89436783

题意:从左上角刷到右下角,路线可以走八个方向,原先是白的就会被刷成黑的,原先是黑的还是黑的,问最后有几种涂色方案。不同的方案要求黑色的位置不一样。

以下是看题解之前的,事实上!我们进了一个思维误区

这道题完全不需要递归!N=3时的状态数和N=2时候的一点关系也么得!

第一列和最后一列2种方案,中间的(N-2)列都3种方案,所以f(n)=4*3^(n-2)

思路:找规律。

队友的代码,悄悄吐槽她快速指数幂的变量命名2333

#include<iostream>
#include<algorithm>
#include<set>
#include<cstring>
#include<queue>
#include<stack>
#include<vector>
#include<stdio.h>
#include<map>
using namespace std;
#define ll long long
const long long maxn=1e9+7;
ll F(ll di,ll zhi)
{
	ll ans=1;
	ll res=di % maxn;
	while(zhi!=0)
	{
		if(zhi&1)
		{
			ans=(ans%maxn)*(res%maxn)%maxn;
		}
		res=(res%maxn)*(res%maxn);
		zhi=zhi>>1;
	}
	return ans;
}
int main()
{
	ll n;
	scanf("%lld",&n);
	if(n==1)
	{
		cout<<1<<endl;
		return 0;
		}
	else
	{
		ll tmp=F(3,n-2)%maxn;
		ll ans=(tmp*4)%maxn;
		cout<<ans<<endl;
		}	
}

猜你喜欢

转载自blog.csdn.net/iroy33/article/details/89436783