BUPT Summer Journey #test3 D

時間限制 1000 ms內存限制 65536 KB

題目描述

田田申請了一個新的oj賬號,打算取一個霸氣而簡單的名字。 什麼叫簡單呢?說白了田田腦子不好使,只能記住abcd這4個字母組成單詞。 怎麼叫霸氣呢?田田認爲a個個數一定要有奇數個,b的個數一定要有偶數個(包括0)纔可以。 現在田田取了一個長爲n的賬號,但是由於田田的記性實在太差了,而把賬號忘記了. 於是把這個問題交給了聰明的wzt,而他認爲這道題太過於簡單就把這道題交給了你 究竟這個賬號有多少種可能?你只需得到這個結果模10 9 +7 的值

輸入格式

多組case,第一行爲case數T ,之後T 行每行一個整數n 1n10 9  T100 

輸出格式

一個case對應一行輸出

輸入樣例

2
1
2

輸出樣例

1
4
思路:我先打了一個表,發現規律爲4^n-1次方,即轉化爲快速冪和邊乘邊模即可。

代碼:

#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;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章