喵哈哈村的木星傳說(四)(LUCAS)

2021-07-30 10:20:32 字數 1253 閱讀 5494

描述喵哈哈村有乙個掛在空中的木星爺爺,每天晚上都講一些故事。而星星同學,作為木星爺爺的聽眾,為了報答,於是每天晚上都會為他解決乙個問題。

今天,星星同學要為木星爺爺解決這樣乙個問題:

小朋友喜歡在各種各樣空間內跳。

現在,小朋友來到了乙個二維平面。在這個平面內,如果邪教當前跳到了(x,y),那麼他下一步可以選擇跳到以下4個點:(x-1,y), (x+1,y), (x,y-1), (x,y+1)。

而每當小朋友到達乙個點,他需要耗費一些體力,假設到達(x,y)需要耗費的體力用c(x,y)表示。

對於c(x,y),有以下幾個性質:

1、若x=0或者y=0,則c(x,y)=1。

2、若x>0且y>0,則c(x,y)=c(x,y-1)+c(x-1,y)。

3、若x<0且y<0,則c(x,y)=無窮大。

現在,小朋友想知道從(0,0)出發到(n,m),最少花費多少體力(到達(0,0)點花費的體力也需要被算入)。

由於答案可能很大,只需要輸出答案對10^9+7取模的結果。

輸入本題包含若干組測試資料。

每行兩個整數n,m,表示小朋友想到達的點。

滿足 1<=n,m<=1e7

輸出輸出代價。

樣例輸入1

複製

1 2

樣例輸出1

6

這題首先觀察所給矩陣,得出乙個結論,只有先橫著走再豎著走或者先豎著走再橫著走才能使最小

觀察數字得出是楊輝三角,所以可以用組合數公式,c(n-1,m-1)+c(n,m-1)=c(n,m)

得出答案 成c(n+m+1,m)+m,利用lucas模板解

#include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

const ll mod = 1e9+7;

ll quick(ll x,ll n)

return ans;

}ll power(ll n,ll m)

return s1*quick(s2%mod,mod-2);

}ll lucas(ll n,ll m)

{ ll ans=1;

while(m&&n)

{ll nn=n%mod, mm=m%mod;

if(nnm) swap(n, m);

cout<<(lucas(m+n+1,n)+m)%mod<

喵哈哈村的木星傳說

描述喵哈哈村有乙個掛在空中的木星爺爺,每天晚上都講一些故事。而星星同學,作為木星爺爺的聽眾,為了報答,於是每天晚上都會為他解決乙個問題。今天,星星同學要為木星爺爺解決這樣乙個問題 給乙個n n的方陣,請將這個方陣順時針旋轉90 輸入本題包含若干組測試資料。第一行乙個n,表示這個方陣是n n的方陣。接...

喵哈哈村的排隊

描述有一堆喵哈哈村的村民們在排隊,他們從佇列的尾部開始標號,標號為1的村民站在最後面,標號為n的村民站在佇列的最前面,而且每個村民都擁有乙個智商值a i 這些村民有時候會覺得不開心,因為他們覺得憑什麼乙個智商比他低的人,可以站在他的前面!現在對於每個村民,他們都想知道,在他前面,智商比他低,離他最遠...

喵哈哈村的賽馬比賽

描述喵哈哈村一年一度的賽馬比賽要開始了!沈寶寶和戴爾廖由於達成了某筆交易,成了好朋友,於是他們相約一起去看賽馬比賽。哦豁,這兩個人來早了,賽馬比賽並沒有開始。假設賽馬場上有n 只馬兒,第i 只馬兒的起點在第i 公尺的位置,這些馬兒都會朝著同乙個方向奔跑。每只馬兒的速度都不一樣,而且大家都不知道這些馬...