文科生的悲哀

2021-08-20 15:37:04 字數 1416 閱讀 2588

總時間限制: 

1000ms

記憶體限制: 

65536kb

描述化學不及格的matrix67無奈選擇了文科。他必須硬著頭皮準備一次又一次的文科考試。 

在這一學期一共有n次文科考試,考試科目有4種,分別為政治、歷史、地理和綜合。每次考哪一科是不定的,因此在考試前matrix67不知道應該 去複習哪一科的功課。他希望能**出下一次可能考的科目。於是,他收集到了以往的文科考試的資料。從以往的考試中,他發現了這樣幾個規律: 

1.如果這次考的是政治,那麼下一次一定會考歷史; 

2.如果這次考的是綜合,那麼下一次一定會考地理; 

3.如果這次考的是歷史,那麼下一次要麼考政治,要麼考地理; 

4.如果這次考的是地理,那麼下一次要麼考歷史,要麼考綜合。 

matrix67已經知道,本學期的第一次考試科目為政治。他打算擬定乙個可以應對所有可能情況的應考複習計畫。因此,他想知道,整個學期有多少種可能的考試科目安排滿足以上規律。你能幫他算出來嗎?

輸入乙個正整數n,代表本學期總的考試次數。

輸入資料保證n<=10000。輸出乙個正整數,表示符合規律的科目安排方案的總數。

考慮到這個結果可能會很大,因此你只需要輸出它mod 7654321的值即可。樣例輸入

5
樣例輸出
5

思路: 將政治,綜合設為1(下一步只通往一門學科),同理將歷史,地理設為2;

畫個樹圖:

1       //1層

|2       //2層

/ \1   2     //3層

/   / \

2  1   2   //4層

/ \ |  / \

1 2 2  1 2  //5層

設第i層(i>2)數字2的個數為a[i];

看第i+1層(i>2)數字1的個數,層數每增1,上層的2將轉化為1,2

所以第i+1層1的個數為上層2的個數(即a[i]);

看第i+1層(i>2)數字2的個數,我把它分成兩塊:

第1塊:層數每增1,上層的2將轉化為1,2,由此產生的2的個數為a[i];

第2塊:層數每增1,上層的1將全部轉化成2,由此產生的2的個數為a[i-1];

兩塊加起來則第i+1層2的個數為a[i+1]=a[i]+a[i-1];

**實現:先求1的個數,再求2的個數,最後相加;

其中,a[1]=0,a[2]=1(由上圖可知);

ps:此題也可以用斐波那契數列來做

**實現:

#include

using

namespace std;

int a[

10005

];int

solve

(int n)

intmain

()

//純手打,打了接近2個小時,請珍惜這份**

文科生的悲哀

化學不及格的matrix67無奈選擇了文科。他必須硬著頭皮準備一次又一次的文科考試。在這一學期一共有n次文科考試,考試科目有4種,分別為政治 歷史 地理和綜合。每次考哪一科是不定的,因此在考試前matrix67不知道應該 去複習哪一科的功課。他希望能 出下一次可能考的科目。於是,他收集到了以往的文科...

文科生的悲哀(vijos1246)

演算法 dp program vijos1246 const maxn 100000 var n,m longint f array 0.maxn,0.5 of longint can array 0.maxn of boolean start array 0.maxn of longint fun...

文科生的悲哀 55頁的高三數學課本

近來一些人問我,聽說你們文科班的不學極限啊。我回答,嗯,而且更強的是,不學極限但學導數。這個話題非常有趣。我打算詳細介紹一下我們的課本是什麼樣子的。薄,封面綠色的,上書 第三冊 選修i 整本書只有兩章,統計和導數。統計裡面只有三節,抽樣方法 總體分布的估計 教你寫正字,畫 總體期望值和方差的估計。最...