1. 程式人生 > >(找規律)萌萌噠身高差

(找規律)萌萌噠身高差

“清明時節雨紛紛,路上行人慾斷魂。”

然而wfy同學的心情是愉快的,因為BNU ACM隊出去春遊啦!並且,嗯。。。

以下是wfy同學的日記:

昨天,何老師告訴我們:明天我們去春遊,大家準備好喝的和吃的哦!

大家聽了都興奮起來,有的歡呼,有的鼓掌,開心得不得了。第二天,我們早早地來到學校,迫不及待地上了車,來到了公園。一進門,啊,太美了!公園中有那麼多樹,有高有矮,有粗有瘦,密密的,在春風吹拂下輕輕搖擺著,像是歡迎我們的到來。公園中有那麼多的鮮花,有紅有黃,有紫有白,散發著淡淡的清香,聞得我們都醉了。公園的邊角上有一條清澈的小河,河水緩緩地流淌著,可以看到水裡的魚兒在快活地游來游去,多自在啊!水草碧綠碧綠的,多新鮮啊!小河的旁邊是一片小樹林,遠遠望去一片鮮綠。我們在裡面吃東西、做遊戲、捉迷藏,玩得瘋極了。樹林的後面是連綿起伏的小山坡,蜿蜿的真像一條遊動的蛇。當然,我覺得公園的天空也很美。它萬里無雲,一碧如洗,很清澈。小鳥在展翅飛翔,它們形態各異,一會兒上升,一會兒下滑,一會兒吃蟲,一會兒在小樹林裡休息,非常悠閒。快樂時光總是那麼短暫,很快,天色就昏暗了。我們依依不捨地上了車,回到了學校,我真希望明年的春天還能再來看看這美麗的公園。


回到學校後,何老師說:請大家排成一排,我們來拍照片啦!

何老師特別喜歡萌的東西,比如**,比如****,等等。

何老師認為,同學們站成一排時,相鄰兩個同學身高相差越多,這兩個同學站在一起越萌。

那麼所有相鄰兩個同學的身高差加起來越大,拍出來的照片就越萌,也就是這張照片的萌力指數。

何老師希望拍出來的照片的萌力指數儘可能大。

然而何老師並不是數學老師,而是語文老師。何老師覺得很GG。

何老師只想知道,如果讓同學們隨便站成一排(站成所有排列的可能性都相等),萌力指數的數學期望是多少。

聰明的我一下子就算出了答案,然後何老師就獎勵了我一個很萌的禮物。

今天真的好開心。

BNU ACM隊共有n名同學,身高分別是1, 2, \dots , n,聰明的你能計算出何老師想要的數學期望嗎?

Input

第一個是一個正整數T(T \leq 20),表示測試資料的組數,

每組測試資料只有一行,包含一個整數n(2 \leq n \leq 100)

Output

對於每組測試資料,輸出一行,包含一個實數,表示萌力指數的數學期望值,要求相對誤差不超過10^{-9}

也就是說,令輸出結果為a,標準答案為b,若滿足\frac{ \left | a-b \right | }{max(1,b)} \leq 10^{-9},則輸出結果會被認為是正確答案。

Sample Input

2
2
3

Sample Output

1.000000000000
2.666666666667

Hint

對於第二組樣例,所有可能的排列是[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1],所以答案是\frac{2+3+3+3+3+2}{6}=\frac{8}{3}

Source

這是個找規律的題目,起初用全排列做超時,輸出結果會發現是存在規律的。

#include<iostream>
#include<cstdio>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<vector>
#include<algorithm>
#include<cmath>
#include<string>
#include<string.h>
using namespace std;
double a[105],d,c=0.666666666667;

int main()
{
    int t;
    scanf("%d",&t);
    a[1]=0;
    for(int i=2;i<105;i++)
    {
        if(i%3){
             d=(i/3)*2+1;
             a[i]=(int)a[i-1]+d;
        }
        else{
            d=((i-1)/3)*2+1;
            a[i]=a[i-1]+d+c;
        }
    }
    while(t--)
    {
        int n;
        scanf("%d",&n);
        printf("%.12lf\n",a[n]);
    }
    return 0;
}