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

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

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

这道题完全不需要递归!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;
		}	
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值