http://218.28.19.228/cogs/problem/problem.php?pid=2066
【題目描述】
七十君最近愛上了排序算法,因而Ta讓十七君給Ta講冒泡排序。 php
十七君給七十君講完了冒泡排序之後,七十君回家苦思冥想,又創造了一種名 算法
爲七十排序的算法。下面是這個算法排序一個排列的過程: 函數
首先從左到右掃描每一個相鄰數對。若是這兩個數是逆序的,則將第二個數(也 排序
就是小的數)放在整個排列的開頭,其餘數位置不變,並把計數器加一。若是 get
沒有逆序的相鄰數對了,就說明已經排好序了,算法終止。 im
七十君認爲計數器的值反映了這個算法的運行時間。但十七君以爲七十君發明 數據
的這個算法會很慢,因此他請你幫忙算算,對於全部長度爲n的排列P, img
的值,這裏f(P)表示排列P運行算法結束時計數器的值。 di
【輸入格式】
一行一個整數n。 時間
【輸出格式】
若是E(n)=a/b,求c使得
bc 三 a (mod 10^9+7)
並輸出,其中0≤c<10^9+7,若是e不存在輸出-1。
【樣例輸入】
4【樣例輸出】
250000005【提示】
對於排列4 1 3 2,算法結束時計數器的值爲5。
4 1 3 2,4和1造成逆序,將1放到排列最前方。
1 4 3 2,4和3造成逆序,將3放到排列最前方。
3 1 4 2,3和1造成逆序,將1放到排列最前方。
1 3 4 2,4和2造成逆序,將2放到排列最前方。
2 1 3 4,2和1造成逆序,將1放到排列最前方。
1 2 3 4,如今排列已經排序完畢。
E(4)=3.25。
數據範圍與約定
對於20%的數據,n≤8。
對於40%的數據,n≤30。
對於60%的數據,n≤200。
對於1OO%的數據,n≤10^5。