1. 程式人生 > >HDU 1005 Number Sequence(基礎矩陣快速冪)

HDU 1005 Number Sequence(基礎矩陣快速冪)

//HDU 1005 15MS 1424K
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const long long mod=7;

long long A,B,n;

struct Matrix{
    int row,col;
    long long data[10][10];
};

inline Matrix mul(Matrix a,Matrix b)
{
    Matrix ans;
    ans.row=a.row,ans.col=b.col;
    memset
(ans.data,0,sizeof(ans.data)); for(int i=1;i<=ans.row;i++){ for(int j=1;j<=ans.col;j++){ for(int k=1;k<=a.col;k++){ ans.data[i][j]+=a.data[i][k]*b.data[k][j]%mod; ans.data[i][j]%=mod; } } } return ans; } inline
Matrix quick_power(Matrix a,long long m) { Matrix ans,tmp=a; ans.row=ans.col=a.row; memset(ans.data,0,sizeof(ans.data)); for(int i=1;i<=ans.row;i++) ans.data[i][i]=1; while(m){ if(m&1) ans=mul(ans,tmp); tmp=mul(tmp,tmp); m>>=1; } return
ans; } int main() { //freopen("1005in.txt","r",stdin); while(~scanf("%lld%lld%lld",&A,&B,&n)){ if(A==0&&B==0&&n==0) break; Matrix ans,tmp; ans.row=ans.col=tmp.row=2,tmp.col=1; ans.data[1][1]=A,ans.data[1][2]=B; ans.data[2][1]=1,ans.data[2][2]=0; tmp.data[1][1]=tmp.data[2][1]=1; if(n==1){ printf("1\n"); continue; } ans=quick_power(ans,n-2); tmp=mul(ans,tmp); printf("%lld\n",tmp.data[1][1]); } return 0; }

相關推薦

HDU 1005 Number Sequence基礎矩陣快速

//HDU 1005 15MS 1424K #include <cstdio> #include <cstring> #include <cmath> #in

【HDOJ 1005Number Sequence 矩陣快速

原諒我貼個水題。。。攢了一年的'恩怨'終於瞭解了 b( ̄▽ ̄)d 去年就接觸過矩陣快速冪 線代太弱  看他們程式碼沒參悟透。。可能真是悟性太差了。。 然後一隻以為矩陣快速冪是很叼的東西(不過確實很叼) 太高深 再沒敢碰。。有毒啊………… 直到最近比賽(VJ)出現矩陣快速冪

HDU 6395 Sequence數論+矩陣快速

Description 定義序列F1=A,F2=B,Fn=C⋅Fn−2+D⋅Fn−1+⌊Pn⌋F1=A,F2=B,Fn=C⋅Fn−2+D⋅Fn−1+⌊Pn⌋,求FnFn Input 第一行一整數T

HDU 1005 Number Sequence找規律,思維

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 153140    Accepted Submissio

Sequence分段+矩陣快速

Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1857    Accepted Subm

HDU 1005 Number Sequence矩陣乘法+快速

Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

HDU-1005-Number Sequence 迴圈週期

原題連結: A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to

No more tricks, Mr Nanguo HDU - 3292pell + 矩陣快速

ger img map source ring rri fff gin bsp No more tricks, Mr Nanguo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K

UVA10870—Recurrences簡單矩陣快速

src logs aps 矩陣 矩陣快速冪 分享 pow sizeof set 題目鏈接:https://vjudge.net/problem/UVA-10870 題目意思: 給出a1,a2,a3,a4,a5………………ad,然後算下面這個遞推式子,簡單的矩陣快速冪,裸題,

Chinese Rings 九連環+矩陣快速

game 百度一 const problem scan make then indicate urn 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 題目: Problem Description Dumbear

hdu 1757 A Simple Math Problem (矩陣快速

題目連結:hdu 1757 題意:見連結。 題解:直接構造矩陣,然後弄個矩陣快速冪就行了。                 程式碼如下: #include<cstdio

ACM-ICPC 2018 焦作賽區網路預賽 L. Poor God WaterBM/矩陣快速

通過本題,學到了一個非常NB的黑科技,杜教BM線性遞推模板 直接打表打出前幾項,丟入BM模板就過了,非常神奇,非常強大 網上說BM板子一般8個以上就穩了,賽後試了一下,這個題要丟入前10個數據才能AC。 #include <cstdio> #includ

藍橋 壘骰子dp+矩陣快速

壘骰子賭聖atm晚年迷戀上了壘骰子,就是把骰子一個壘在另一個上邊,不能歪歪扭扭,要壘成方柱體。經過長期觀察,atm 發現了穩定骰子的奧祕:有些數字的面貼著會互相排斥!我們先來規範一下骰子:1 的對面是 4,2 的對面是 5,3 的對面是 6。假設有 m 組互斥現象,每組中的那

hdu6030推導+矩陣快速

Happy Necklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)

1005 Number Sequence長得像矩陣快速的找規律

A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to ca

HDU-6395多校7 Sequence除法分塊+矩陣快速

review lse %d sca code left define hdu fin Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others

hdu 1005矩陣快速

題目傳送門 題目描述的是一個遞推,並且沒有其他變數與n有關,是一個典型的矩陣快速冪模板題(有多種解法,只提這一種)。 {1,1} * A{A,1}   = {f(n),f(n-1)}              {B,0} /** 矩陣快速冪 模板 **/ #incl

hdu 1005Number Sequence 矩陣快速

F(n)                                 a                     b                                                   F(n-1)                    

ICPC2017網路賽瀋陽1005&HDU6198 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 byn=Fa1+Fa2+...+Fak where 0≤a1≤a2