UOJ#574桂林ファイル

[タイトル説明:

桂林は、N個の異なるファイルを持っている、今、彼はこれらの各フォルダ内のファイルと2つだけのプロジェクトを保存するためにN-1フォルダ(同じ)を作成しようと、各プロジェクトは、ファイルまたはフォルダを指定でき、彼はどのように多くの異なるストレージ方法を尋ねました。

[入力説明:

正の整数Tの最初の行は、データセットの数を表します。

次T線各正の整数N.

[出力]説明:

総Tライン、19260817という意味で桂林ストレージモードの総数。

[サンプル入力]:

2
3
5

[]出力例:

3
105

[時間制限、およびデータの説明の範囲:

時間:1秒容量:256M

データの30%:2≤N≤20。

データの70%:2≤N≤1000。

100%のデータ:T≤100、2≤N≤10^ 6

考え

簡単な順列が取得する:[1] F、[2] = 1 fは、1 = F [3] = C(3,1)= 3、[4] = C(3,1)* F F [1] * F [3] + C(2,2)* F [2] * F [2] / 2(が繰り返される場合、手動で見つけることができるものをシミュレートするために)F、15 = [5] = 105···

注意深い観察:1 = 1,3 = 1 * * 7 3.15 = 1 * 3 * 5105 = 1 * 3 * 5 ...あなたはそれを見つけますか?

これは、列の奇数の積である(曲がったと始め先生、Taはこの問題は、法律が見つからない、怠惰ではないことを私に言った、このトピックの数、それへの貢献ではありません...)

コード:

#include <cmath> 
の#include <cstdioを> 
する#include <CStringの> 
する#include <iostreamの> 
する#include <アルゴリズム> 
名前空間STDを使用して、

const int型N = 2000010; 
const int型のMod = 19260817; 

int型T、N。
長い長いX [N]。

INTメイン(){ 
	X [0] = xの[1] = 1。
	(私は++; iが<= N I = 2の整数)のために
		X [I] = xで[I-2] * I%のMod。
	scanf関数( "%のD"、&T)。
	(t--){一方
		のscanf( "%d個"、&N); 
		printf( "%Dを\ n"、X [2 * N-3])。
	} 
	0を返します。
}

 

おすすめ

転載: www.cnblogs.com/mysh/p/11470535.html