涂色问题
描述:
这是一个涂色问题。现在有一张网格,一共 3 行,每行 n 个。你需要用 3 种颜色给网格上色,需要确保相邻格子颜色不同。请问一共有多少种上色方案呢?
答案对 109+7 取模。
输入:
一行一个整数 n,1≤n≤106。
输出:
一行一个整数,表示方案数。
样例输入:
1
样例输出:
12
C++代码
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n,result;
int a=pow(10,9)+7;
long int temp;
long int same=6;
long int diff=6;
cin>>n;
for(int i=1;i<n;i++){
temp=same*3+diff*2;
diff=same*2+diff*2;
same=temp;
if(same>a)
same=same%a;
if(diff>a)
diff=diff%a;
temp=same+diff;
if(temp>a)
temp=temp%a;
}
temp=same+diff;
result=temp%a;
cout<<result<<endl;
}