1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 多次元DPメニュー(言語選択)
  4. 問題一覧 Kotlin編
  5. いびつなクイーン問題 Kotlin編

多次元DPメニューのサムネイル
いびつなクイーン問題 Kotlin編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

n × n のチェス盤上に、クイーンをいくつか置きたいと考えています。
ただし、以下の条件を満たすように置かなければなりません。

・ どの行にもクイーンは 1 つ以下しか存在しない。
・ すべての連続する k 行について、どの斜めにもクイーンは 1 つ以下しか存在しない。(つまり、座標 (x, y) としたとき、x + y および x - y が同じ値になるようなマスにはクイーンを置くことができない)

i = 1, 2, ..., n について、クイーンを i 個置く方法が何通りあるかを求めてください。

入力される値

n k

・ 1 行目に、整数 n と整数 k が半角スペース区切りで与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

合計 n 行出力してください。
i 行目には、クイーンを i 個置く方法の数を出力してください。(1 ≦ i ≦ n)

また、末尾に改行を入れ、余計な文字を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・ 入力はすべて整数
・ 1 ≦ n ≦ 10
・ 1 ≦ k ≦ min(n, 5)

入力例1

3 3

出力例1

9
17
5

入力例2

10 5

出力例2

100
4040
86580
1086442
8309776
39057728
110774088
180129738
150199152
48123480

問題一覧へ戻る

ページの先頭へ戻る