HDU 6172 Array Challenge【推公式/猜+矩陣快速冪】
題意:給一堆公式,求
官方題解的公式推的實在是沒什麼道理,但是這個xjb亂猜我真的是一口老血噴出來。。。
令
沒錯,就是
然後就用矩陣快速冪瞎搞搞就好了,沒什麼可說的。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1000000007;
struct Matrix{
ll a[5][5];
void init(){
for (int i=1;i<=3;i++){
for (int j=1;j<=3;j++){
a[i][j]=0;
}
}
}
Matrix operator * (const Matrix &b) const{
Matrix tmp;
tmp.init();
for (int i=1;i<=3;i++){
for (int j=1;j<=3;j++){
for (int k=1;k<=3;k++){
tmp.a[i][j]+=(a[i][k]*b.a[k][j]%mod+mod)%mod;
}
}
}
return tmp;
}
};
Matrix mat_pow(Matrix mat,ll n){
Matrix ans;
ans.init();
ans.a[1][1]=ans.a[2][2]=ans.a[3][3]=1;
while (n){
if (n&1 ) ans=mat*ans;
mat=mat*mat;
n>>=1;
}
return ans;
}
int main(){
int T;
scanf("%d",&T);
while (T--){
ll n;
scanf("%lld",&n);
if (n==2) printf("31\n");
else if (n==3) printf("197\n");
else if (n==4) printf("1255\n");
else{
Matrix mat;
mat.init();
mat.a[1][1]=4,mat.a[1][2]=17,mat.a[1][3]=-12;
mat.a[2][1]=1,mat.a[3][2]=1;
mat=mat_pow(mat,n-4);
ll ans=((mat.a[1][1]*1255%mod+mat.a[1][2]*197%mod+mod)%mod+31*mat.a[1][3]%mod+mod)%mod;
ans%=mod;
printf("%lld\n",ans);
}
}
}
相關推薦
HDU 6172 Array Challenge【推公式/猜+矩陣快速冪】
題目連結 題意:給一堆公式,求⌊a[n]‾‾‾‾√⌋的值。 官方題解的公式推的實在是沒什麼道理,但是這個xjb亂猜我真的是一口老血噴出來。。。 令f(n)=⌊a[n]‾‾‾‾√⌋,則f(n)=4f
HDU 6172 Array Challenge (打表找規律+矩陣快速冪 17多校第十場第2題)
題目連結 題意 分析 不得不佩服AC這道題的人腦洞,為什麼你們這麼熟練。。。打表找規律無所不能。 因為我們無法處理開方的取模問題,因此我們不能一步步求。我們令fn=⌊an−−√⌋,則打表
2017多校第10場 HDU 6172 Array Challenge 猜公式,矩陣冪
set its typedef == name main d+ space img 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6172 題意:如題。 解法: #include <bits/stdc++.h&g
HDU - 6172:Array Challenge (BM線性遞推)
oid bit pan gin https challenge pre linear res 題意:給出,三個函數,h,b,a,然後T次詢問,每次給出n,求sqrt(an); 思路:不會推,但是感覺a應該是線性的,這個時候我們就可以用BM線性遞推,自己求出前幾項,然後
第十場 hdu 6172 Array Challenge(矩陣快速冪)
不知道 log tar 4.6 width += arr open ret http://acm.hdu.edu.cn/showproblem.php?pid=6172 題目大意:按照給出的公式算出an 解題思路:an=4an-1+17an-2-12an-3,不要問
HDU 6172 Array Challenge 找規律+矩陣快速冪
題目 分析 這道題目一看就想到矩陣快速冪。可以先把hn算出來,進而把bn,an都算出來。但是發現一個問題,題目中是要求⌊an−−√⌋對1e9+7取模之後的值。但是開根號沒法取模啊,所
2017 ACM/ICPC Asia Regional Shenyang Online:number number number hdu 6198【矩陣快速冪】
cpc 相同 exp -128 integer regional test atom online Problem Description We define a sequence F:? F0=0,F1=1;? Fn=Fn?1+Fn?2 (n≥2).Give you
【矩陣快速冪】HDU - 5950 C - Recursive sequence
C - Recursive sequence HDU - 5950 Farmer John likes to play mathematics games with his N cows. Recently, they are attracted by recursive sequences.
【AC自動機+矩陣快速冪】POJ - 2778 - DNA Sequence & HDU - 2243 - 考研路茫茫——單詞情結
POJ - 2778 - DNA Sequence 題目連結<http://poj.org/problem?id=2778> 題意: DNA序列只包含ACTG四個字元,已知一些病毒的DNA序列,問你序列長度為n(1 <= n <=2000000000)且不
HDU 6198 number number number【找規律+矩陣快速冪】
題目連結 題意:從含0的斐波那契數列中可重複的任取K個數,求這K個數的和無法形成的最小整數。 寫了幾個之後大膽的猜測i的答案是F[2∗(i+1)+1]−1… 於是矩陣快速冪…… #includ
【矩陣快速冪】HDU 4549 : M斐波那契數列(矩陣巢狀)
【題目大意】 M斐波那契數列F[n]是一種整數數列,它的定義如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 現在給出a,
【遞推+矩陣快速冪】【HDU2604】【Queuing】
Queuing Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3032 Accepted Subm
hdu-4549 M斐波那契數列【矩陣快速冪】
找規律寫出f(2),f(3),f(4),f(5) .........可以發先 a b的係數是一系列的fib數列 如果可以求出fib數列 求快速冪就可以了 這樣問題就在於如何求fib數列了 1 1 【f[n
hdu 5667 Sequence【矩陣快速冪】
Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 285 Accepted Submis
HDU 6395 Sequence 【矩陣快速冪】【分割槽】
Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1900 Accepted Subm
HDU --- 4549 M斐波那契數列 【費馬小定理+矩陣快速冪】
傳送門 思路: 通過把前面幾項手推出來可以發現, 其次方項符合斐波那契數列, 又因為資料非常大, 所以就可以想到用矩陣快速冪去求得次方項, 需要注意的就是我們求的是次方, 而答案是取的某個數的該次方, 而a^b % p != a^(b%p) % p, 所以就
hdu 5950 2016ACM/ICPC瀋陽賽區現場賽C題【矩陣快速冪】
Problem Description Farmer John likes to play mathematics games with his N cows. Recently, they are attracted by recursive seque
【HDU 6198】number number number 【規律+矩陣快速冪】
We define a sequence F: ⋅ F0=0,F1=1; ⋅ Fn=Fn−1+Fn−2 (n≥2). Give you an integer k, if a positive number n can be expressed by n=
BZOJ4818 [SDOI2017] 序列計數 【矩陣快速冪】
void 所有 num ret con esp span 相同 std 題目分析: 一個很顯然的同類項合並。註意到p的大小最大為100,考慮把模p意義下相同的求出來最後所有的減去沒有質數的做矩陣快速冪即可。 代碼: 1 #include<bits/stdc++.h
HDU1575-Tr 【矩陣快速冪】(模板題)
target bsp .net code test tdi init ace contest <題目鏈接> A為一個方陣,則Tr A表示A的跡(就是主對角線上各項的和),現要求Tr(A^k)%9973。 Input 數據的第一行是一個T,表示有T組數據。