據學長的話來說
這是當年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 的倍數。請幫助她解決這個問題。第一行包含 ...