A - 来月は何月?

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋君は、来月遊びに行く約束をしました。

ですが、高橋君は頭が悪いので、来月が何月であるかが解りません。

今月が何月かが与えられるので、来月が何月であるかを出力するプログラムを作ってあげてください。


入力

入力は以下の形式で標準入力から与えられる。

N
  • 1 行目には、今月の月を表す整数 N (1 ≦ N ≦ 12) が与えられる。

出力

来月が何月であるかを、 1 行で出力せよ。出力の末尾にも改行をいれること。


入力例1

1

出力例1

2

1 月の次の月は 2 月です。


入力例2

12

出力例2

1

12 月の次の月は 1 月です。

B - 名前の確認

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

新米プログラマーであるあなたは、簡単な文字列操作を行うプログラムを作成する仕事を任されました。 名前が入力として与えられるので、正しいフォーマットに直すプログラムです。

正しい名前のフォーマットは、以下の通りです。

  • 1 文字目は大文字アルファベット
  • 2 文字目以降は小文字アルファベット

要件を満たすプログラムを作成してください。


入力

入力は以下の形式で標準入力から与えられる。

S
  • 1 行目には、名前 S (1 ≦ |S| ≦ 12) が与えられる。
  • S に含まれる文字は、全て小文字、もしくは大文字のアルファベットであることが保障されている。

出力

正しいフォーマットに変換した文字列を 1 行で出力せよ。出力の末尾にも改行をいれること。


入力例1

taKahAshI

出力例1

Takahashi

先頭 1 文字が大文字、それ以降は小文字になっています。


入力例2

A

出力例2

A

名前は 1 文字の場合もあります。 最初から正しいフォーマットの文字列が与えられている場合は、そのまま出力して構いません。

C - 123引き算

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

あなたは、友人から、一人用のゲームを紹介されました。

最初に、数字 N が与えられます。 1 , 2 , 3 の中から好きな数字を選び、 与えられた数字に対し、引き算を行う、という処理を行うことできます。

この処理は 100 回まで行うことが可能であり、最終的に数字を 0 にすることが目標のゲームです。

しかし、計算途中でなってはいけないNG数字が 3 つ与えられており、 この数字に一時的にでもなってしまった瞬間、このゲームは失敗となります。 NG数字が N と同じ場合も失敗となります。

NG数字が N と同じ場合について、正しい判定が行われていませんでした。リジャッジを行いました。

あなたは、このゲームが、目標達成可能なゲームとなっているか調べたいです。

目標達成可能な場合はYES、そうでない場合はNOと出力してください。


入力

入力は以下の形式で標準入力から与えられる。

N
NG_1
NG_2
NG_3
  • 1 行目には、最初に与えられる数字 N (1 ≦ N ≦ 300) が与えられる。
  • 2 行目には、 1 番目のNG数字 NG_1 (1 ≦ NG_1 ≦ 300) が与えられる。
  • 3 行目には、 2 番目のNG数字 NG_2 (1 ≦ NG_2 ≦ 300) が与えられる。
  • 4 行目には、 3 番目のNG数字 NG_3 (1 ≦ NG_3 ≦ 300) が与えられる。

出力

目標達成可能な場合はYES、そうでない場合はNO1 行で出力せよ。出力の末尾にも改行をいれること。


入力例1

2
1
7
15

出力例1

YES

21 回引くことにより、 0 を作ることが出来ます。


入力例2

5
1
4
2

出力例2

YES

最初に 2 を引き、次に 3 を引くことで、530 と変化し、目標を達成することが出来ます。


入力例3

300
57
121
244

出力例3

NO

100 回連続で 3 を引かなければ、目標を達成することはできません。 しかし、 3 だけを引き続けていると、途中でNG数字である 57 になってしまいます。

D - 大ジャンプ

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

XY 座標上に、スタート地点とゴール地点が 1 つずつあります。 スタート地点は (0, 0) にあり、ゴール地点は (X, Y) です。

あなたは、ジャンプという移動法を用いて、移動を行います。 ジャンプを 1 回行うと、あなたは、以下の 4 つのうち、ランダムで選ばれた 1 つの移動が行われます。

  • X 軸に平行に +D だけ移動する。
  • X 軸に平行に -D だけ移動する。
  • Y 軸に平行に +D だけ移動する。
  • Y 軸に平行に -D だけ移動する。

これらの移動は、どれもちょうど 1/4 の確率で選択されます。

あなたは、最初にスタート地点におり、ちょうど N 回のジャンプでゴール地点にたどり着きたいです。

目的を達成できる確率を出力しなさい。


入力

入力は以下の形式で標準入力から与えられる。

N D
X Y
  • 1 行目には、ジャンプする回数を表す整数 N (1 ≦ N ≦ 1,000) と、ジャンプの距離 D (1 ≦ D ≦ 10^9) が、スペース区切りで与えられる。
  • 2 行目には、ゴール地点の座標を表す整数 X, Y (-10^9 ≦ X, Y ≦ 10^9) が、スペース区切りで与えられる。

部分点

1 ≦ N ≦ 8 のケースに全て正解すると、部分点として 90 点が与えられる。

1 ≦ N ≦ 30 のケースに全て正解すると、追加で 10 点が与えられる。

全てのケースに正解すると、ボーナス点として 1 点が与えられる。

出力

あなたが最終的にゴール地点にたどり着ける確率を 1 行で出力せよ。出力の末尾にも改行をいれること。

なお、想定解答との絶対誤差または相対誤差が、10^{-9} 以下であれば、正解として扱われる。


入力例1

2 10000000
10000000 10000000

出力例1

0.125

(0, 0) から 2 回のジャンプで (10000000, 10000000) へ飛ぶ確率は、 1/8 です。


入力例2

100 2
3 7

出力例2

0.0

偶数の距離のジャンプでは、奇数の座標にたどり着くことはできないため、到達する確率は 0 となります。


入力例3

11 8562174
25686522 17124348

出力例3

0.018174648284912