NOI2013 矩陣遊戲

2021-08-02 02:18:55 字數 1475 閱讀 5125

據學長的話來說

這是當年noi最簡單的一道題

於是抱著試一試的心態做了一做

蒟蒻qaq

由於矩陣乘法不會,只能數學必修的種數列知識推公式;

先橫向推(f

x+k)

=a(f

x−1+

k)展開就可以得到乙個等比數列;

然後根據等比數列的性質可得:fx

=ax−

1∗f1

+b∗(

ax−1

−1)/

(a−1

) 至此我們完成了將每行的最後乙個用第乙個表示

再根據第三個條件,同理可得:fi

+1=a

m−1∗

c∗fi

+b∗c

∗(am

−1−1

)/(a

−1)+

d 這裡我們可以得到每一列的第i個如何用第i-1表示;

那麼再將這個公式的係數看成乙個整體,又是乙個等比數列

我們就建立起了fn

,1與f

1,1 的關係

直接再用第乙個公式算出f(

n,m)

因為主人公婷婷是十分殘暴的,資料範圍很扎心;

那麼我們知道am

=amm

odφ(

p)所以在讀入的時候我們需要處理一對用於乘法的n,m和一對用於冪的n,m;

因為1000000007是乙個素數,φ(

mod)

=mod

−1

最後再囉嗦一句,就是逆元處理

見**

#include 

#include

#include

#include

#define ll long long

#define mod 1000000007

using namespace std;

struct noden,m;

ll a,b,c,d,aa,bb,ans;

ll xx,yy;

void read(node &x)

}ll ksm(ll x,ll y)

return rtn;

}void getinv(ll a,ll b)

getinv(b,a%b);

ll tmp=xx;

xx=yy;

yy=tmp-(a/b)*yy;

}int main()

else

if(a==1)

else

ll f1=(a+b)%mod;

if(aa==1)

else

printf("%lld",ans);

return

0; }

NOI2013矩陣遊戲

題目鏈結luogu1397矩陣遊戲 題目大意 已知 f1 1 1 fi,j a f i,j 1 bf i,1 c fi 1,m d j 1 i 1 求f n,m 我們可以構造矩陣 1 fn,1 1 0ba m 1 1fn m 1 c fn 1,m d 10b a m 1 1 fn,m 令t 10ba...

NOI2013 矩陣遊戲

題意 對於乙個n行m列的矩陣,第i行第j列的元素為f i j 已知a,b,c,d,並且矩陣元素滿足 f 1 1 1 f i,j a f i j 1 b j 1 f i,1 c f i 1 m d i 1 求f n m 答案對1e9 7取模 1 n,m 1e1000000 1 a,b,c,d 1e9 ...

矩陣乘法 NOI2013 向量內積

兩個 d 維向量 a a1,a2,ad 與 b b1,b 2,bd 的內積為其相對應維度的權值的乘積和,即 a b i 1 daib i a1 b1 a 2b2 ad bd現在有 n 個 d維向量 x1 x2,xn 小喵喵想知道是否存在兩個向量的內積為 k 的倍數。請幫助她解決這個問題。第一行包含 ...