P10035「FAOI-R2」Paint (A) 题解
P10035 题目
解题思路
一种不太寻常的解题方法。
我们可以先写一个暴力枚举的代码:
#include<bits/stdc++.h>
using namespace std;
const int p=1000000007;//暴力枚举时可以不开long long
int poww(int a,int b)//快速幂
{
int s=1;
while(b)
{
if(b&1)
s=s*a%p;
a=a*a%p;
b>>=1;
}
return s;
}
bool pd(int a)//判断V3(a)是否为奇数
{
int x=a,i;
while(x%3!=0)
x/=3,i++;
if(i%2==1)
return true;
return false;
}
int main()
{
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
int n,s1=0,s2=0;//计算两种方法所踩到的油漆个数
cin>>n;
for(int j=1;j<=poww(3,n);j++)
{
if(pd(j))
{
if(j%2==0)
s2=(s2+1)%p;
else
s1=(s1+1)%p;
}
else
{
if(j%2==1)
s2=(s2+1)%p;
else
s1=(s1+1)%p;
}
}
cout<<min(s1,s2)<<"\n";
}
return 0;
}
用此代码可求出
不难发现,
即答案为
很明显,这是一个共比为
设