[CSP-Sシミュレーション試験]:スムース(数学)

トピックポータル(内部タイトル84)


入力形式

二つの整数$ B、Kの$


出力フォーマット

答えを表す整数


サンプル

サンプル入力:

5 100

出力例:

280


データ範囲とヒント

答えは以下$ 10 ^ 7 $であることを確実にするために$ 40 \%の$のデータについては、
答えは以下$ 7 \タイムズ10 ^ 7 $であることを保証するために、別の$ 20 \%の$のデータについて、
別の$ 20 \%の$のデータについて、$ B = 2 $
$ 100 \%の$データ、$ K \は^ 7 10 leqslant B \は、15 $をleqslant、 10 $答えは^ {18} $未満であることを確認します


問題の解決策

私は試験の練習についてお話しましょう。

実際には、非常に暴力的な、キューの操作を行い、品質から各列挙子には、すべてのキューの数を乗じているだけで、最初の$ 1 $それはすることができます。

十分に大きい第一$ K $を探しシーケンスの最後の行は、うまく$ 80 $点、カード良い時間($ 10 ^ {18} $に掃引しない全て、別段$ TLE $)であることが期待します。

正の解のほかのようなポインタに小さな$ Bは$、$ B $を見つけました。

時間の複雑さ:$ \シータ(Bの\回K)$。

期待はスコア:$ $ 100ポイントを。

実際のスコア:$ $ 100ポイント。


コードの時間

#include <ビット/ STDC ++ H> 
名前空間STDを使用して、
INT B、K、失敗[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}。
INT PRI [] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}。
長い長いS [10000001]。
メインINT()
{ 
	scanf関数( "%d個の%のD"、&B、&K)。
	S [1] = 1。
	以下のために(INT I = 2; iは= Kを<; iは++)
	{ 
		長い長フラグ= 0x3f3f3f3f3f3f3f3f。
		用(int型J = 0; J <B; J ++)
		{ 
			場合に失敗[J] ++(複数可* PRI [J] == sは[I-1] [j]をフェイル])。
			フラグ=秒(複数可* PRI [J] <フラグ[J]失敗])の場合* PRI [J] [j]の失敗]。
		} 
		S [I] =フラグ。
	} 
	のprintf( "%のLLD"、S [K])。
	0を返します。
}

RP ++

おすすめ

転載: www.cnblogs.com/wzc521/p/11736719.html