分析:
给你一个数n,让你构造出一个长度为3n的数列,其中每个数只能取1,2,3
只要存在某3个间隔分别为n的数之和为6,就是满足题意的序列。
问你这样的序列有多少。
快速幂搞一下
从反面计算,算不满足的序列,可知答案为3 ^ 2n - 7 ^ n
#include <iostream>
#include <sstream>
#include <iomanip>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <bitset>
#include <string>
#include <numeric>
#include <algorithm>
#include <functional>
#include <iterator>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <complex>
#include <ctime>
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 1e9 + 7;
using namespace std;
LL modexp(LL a,LL b)
{
LL t = 1LL;
while(b != 0)
{
if(b % 2 == 1)
t = (t * a) % mod;
a = (a * a) % mod;
b /= 2;
}
return t;
}
int main()
{
LL n;
scanf("%I64d",&n);
LL ans = modexp(27,n) - modexp(7,n) + mod;
ans %= mod;
printf("%I64d\n",ans);
return 0;
}