題目
題意:在數軸上會有烟花,他會向前乙個和後乙個擴散,然後在一定時間後,要求最後位置有多少烟花。
模擬一下發現一行中把0去掉之後他就是乙個楊輝三角。新知識:楊輝三角就是組合數。但是因為組合數太大了,而且太慢了,所以要用乘法逆元。乘法逆元有好多種解法。這裡用費馬小定理。然後要考慮要求的點和烟花點的距離。
#include
#include
#include
using
namespace
std;
const
int fcnt=100005;
const
long
long mod=1000000007;
long
long fac[fcnt];
void getfac()
long
long quickpow(long
long a,long
long b)
return ret;
}long
long inv(long
long a)
long
long c(long
long n,long
long m)
int main()
ans=(ans+(t2*c(n,(abs(t1-m)+n)/2))%mod)%mod;//第奇數個點-1然後除以二就是組合數的m,這裡要注意絕對值。
}printf("%lld\n",ans);
}}
順便補乙個盧卡斯的用法(從師哥那裡搬來的)
lucas定理(大部分情況 p<105)
cmn%p=(cm%pn%p%p∗cm/pn/p%p)%p
且c0n=1;
這樣我們就可以用逆元法求出cm%pn%p,然後遞迴求解cmn%p
lucas定理模板(c(m,n)代表cmn)
long
long lucas(long
long n,long
long m)
第八屆山東省acm省賽總結
打了個醬油,還是挺難過的,還好早就習慣了這種心態了,也打擊不了我。先說下滾榜,滾榜的時候還是挺激動的,畢竟封榜的時候就在榜單末尾了,隨時都可能從榜上滾下來,結果也是意料之中的滾下來了。比賽開始首先a掉i題,g題因為我在做i題的時候把提示的修改題目的資訊關掉了,導致不知道題目修改資料了,wa了好幾發,...
山東省第八屆ACM省賽遊記
day 1 凌晨,來了幾分興致,和隊友在vjudge上開了一把zoj月賽,wa一發悶一口拿鐵,一瓶拿鐵 不一會就被喝完了!好氣啊!遂開始愉快地打遊戲,打著打著,woc,居然3點半了,小睡片 刻,咬上幾口麵包,便乘著校車前往了青科。到達目的地的 first impression 志願者超讚!經過各種排...
第八屆山東省浪潮杯C題
挺簡單的一道題 不知道為什麼去年那麼多隊這道題都過不了 你隨便寫寫這不就是組合數嗎 然後先打表階乘 在用逆元 啊ac includeusing namespace std typedef long long ll const ll n 2e5,m 1e9 7 ll jc n 10 ll t,w in...