A. Plant“`
A题必然不会是一道难题。
题目的模型是我们平时最熟悉的划分三角形问题,求的是n次划分后头向上的三角形的个数
枚举找规律猜想,发现向上的三角形的个数为:
1+2+3+到2^n=(1+2^n)*2^(n-1)
根据题目的范围,这是个大数,需要进行快速幂取模运算
AC代码:
/*************************************************************************
> File Name: CF185A.cpp
> Author:
> Mail:
> Created Time: 2016/9/20 1:19:17
************************************************************************/
#include <cstdio>
#include<iostream>
const int mod= 1000000007;
using namespace std;
typedef long long LL;
LL quickpow(__int64 a,__int64 b){
LL ans=1;
while(b>0){
if(b&1)
ans=ans*a%mod;
b=b>>1;
a=(a%mod)*(a%mod)%mod;
}
return ans;
}
int main(){
//freopen("input.txt","r",stdin);
__int64 n;
while(~scanf("%I64d",&n)){
if(n==0){ //特判n=0的情况
printf("1\n");
continue;
}
LL res;
res=((1+quickpow(2,n))%mod)*(quickpow(2,n-1)%mod);
res%=mod;
printf("%I64d\n",res);
}
return 0;
}
“`