国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【51Nod 1149】Pi的遞推式

2019-11-08 03:00:24
字體:
供稿:網(wǎng)友

Description

F(x) = 1 (0 <= x < 4) F(n) = F(n - 1) + F(n - pi) (4 <= x) Pi = 3.1415926535….. 現(xiàn)在給出一個(gè)N,求F(n)。由于結(jié)果巨大,只輸出Mod 10^9 + 7的結(jié)果即可。

Solution

之前在做斐波那契額數(shù)列的第n項(xiàng)的時(shí)候,可以考慮為從0開始,可以選擇+1或+2,一直加到n的方案數(shù)。 那么這道題也大同小異,從0開始可以+1或者+π,直到第一次>n-4的時(shí)候的方案數(shù)(為什么是第一次,因?yàn)閺膎選擇-1或-pi,當(dāng)小于4的時(shí)候就退出1了) 那么在最后到達(dá)n-4的時(shí)候,可能是+1加進(jìn)去的,也可能是+pi加進(jìn)去的,所以要分類討論一下。 如果是+1加進(jìn)去的,那么就要枚舉+pi的次數(shù),然后求出+1次數(shù)的上限,使得最后加到≤n-4,然后+1就可以突破。然后用組合數(shù)算一算就好了。 如果是+pi加進(jìn)去的,那么和上面類似,只不過是枚舉+1的次數(shù),然后求+pi的上限而已。

Code

#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)typedef double db;typedef long long ll;using namespace std;const db pi=acos(-1);const int mo=1e9+7,maxn=1e6+7;int i,j,k,l,t,n,m;ll ans,fact[maxn],ni[maxn];db x,y;ll qsm(ll x,ll y){ ll z=1; for(;y;y/=2,x=x*x%mo)if(y&1)z=z*x%mo; return z;}ll c(ll x,ll y){ return fact[x]*ni[x-y]%mo*ni[y]%mo;}int main(){ fact[0]=ni[0]=1; fo(i,1,1000000)fact[i]=fact[i-1]*i%mo; ni[1000000]=qsm(fact[1000000],mo-2); fod(i,999999,1)ni[i]=ni[i+1]*(i+1)%mo; scanf("%d",&n); if(n<4){
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 姚安县| 射洪县| 贺兰县| 新竹市| 永顺县| 安达市| 桐柏县| 黄冈市| 波密县| 昭苏县| 大名县| 游戏| 克拉玛依市| 九寨沟县| 华容县| 溆浦县| 海安县| 韩城市| 青川县| 邢台县| 舟曲县| 建平县| 桂阳县| 托克逊县| 三门县| 濉溪县| 松原市| 临沂市| 汝州市| 汤阴县| 乌兰察布市| 舟山市| 稷山县| 从江县| 泗洪县| 湟源县| 区。| 金坛市| 库尔勒市| 灯塔市| 牙克石市|