D. 田田的賬號 2014新生暑假個人排位賽03
時間限制 1000 ms內存限制
65536 KB
題目描述
田田申請了一個新的oj賬號,打算取一個霸氣而簡單的名字。 什麼叫簡單呢?說白了田田腦子不好使,只能記住abcd這4個字母組成單詞。 怎麼叫霸氣呢?田田認爲a個個數一定要有奇數個,b的個數一定要有偶數個(包括0)纔可以。 現在田田取了一個長爲n的賬號,但是由於田田的記性實在太差了,而把賬號忘記了. 於是把這個問題交給了聰明的wzt,而他認爲這道題太過於簡單就把這道題交給了你 究竟這個賬號有多少種可能?你只需得到這個結果模10 9 +7 的值
輸入格式
多組case,第一行爲case數T ,之後T 行每行一個整數n 。1≤n≤10 9 ,T≤100
輸出格式
一個case對應一行輸出
輸入樣例
2
1
2
輸出樣例
1
4
代碼:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
int n,a[500],cnt;
int numa,numb;
long long power;
long long ans;
void quickpower(int x)
{
int k=x;
a[0]=0;
while(k>0)
{
a[++a[0]]=k%2;
k=k/2;
}
for(int i=a[0];i>=1;i--)
{
ans=ans%1000000007*ans%1000000007;
if(a[i]==1)ans=ans%1000000007*4%1000000007;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
power=4%1000000007;ans=1;
quickpower(n-1);
printf("%lld\n",ans);
}
return 0;
}