poj

Block

  这是冬训的一道关于矩阵快速幂的题目,但我硬是想不出递推式,于是只好硬推公式(同时部分参考题解)

推导过程如下图:

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll mod=10007;
ll (ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1)
ans=(ans*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return ans;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
ll ans=((fpow(2,n-1)-1)*fpow(2,n-1)+fpow(2,n)+mod)%mod;
cout<<ans<<endl;
}
return 0;
}