思路如下:一共个方案数是:(m-1)^n+(m-1)*(-1)^n;
所以答案最多就是3^100000,正常算幂肯定是要超时的,所以要用快速幂取模,详见百度;
代码如下:
#include <bits/stdc++.h>
using namespace std;
long long quick(long long a, long long b, long long c)
{
long long ans = 1;
a = a % c;
while (b != 0)
{
if (b & 1) ans = (ans*a) % c;
b >>= 1;
a = (a*a) % c;
}
return ans;
}
int main()
{
long long n;
while (scanf("%lld",&n)!=EOF)
{
if (n == 1)
{
cout << "4\n";
continue;
}
long long ans=0;
ans += quick(3, n, 1000000007);
if (n & 1)
ans -= 3;
else
ans += 3;
printf("%lld\n", ans);
}
return 0;
}