A - 12月6日

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

12月6日は、月を日で割って割り切れる日です。日付が与えられるので月が日で割り切れるかを判定してください。


入力

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

M D
  • 月を表す整数 M と日を表す整数 D が空白区切りで与えられる。

出力

月が日で割り切れるなら YES 、割り切れないなら NO を出力せよ。出力の末尾には改行をつけること。


入力例1

1 1

出力例1

YES

入力例2

2 29

出力例2

NO

入力例3

12 6

出力例3

YES
B - A±B Problem

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋くんはプログラミングコンテストで A+B を出力するプログラムを書いたつもりでしたが、 A-B を出力するプログラムを書いたような気がしてきて不安になりました。高橋くんは書いたプログラムをうっかり消してしまって入出力しか残っていません。高橋くんが書いたプログラムが A+B なのか、 A-B なのか、どちらの可能性もあるか、どちらでもないかを判定してください。

ただし、 A+BA-B のどちらかの可能性しかない場合、そのプログラムを書いたと判定します。例えば 1 1 という入力に対して 2 を出力しているなら、 A+B の可能性はあるが A-B の可能性はないので、高橋くんは A+B を書いたと判定してください。


入力

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

A B C
  • 高橋くんのプログラムに対する入力を表す整数 A, B (0≦A,B≦100) と 高橋くんのプログラムの出力を表す整数 C (0≦C≦100) がスペース区切りで与えられる。

出力

高橋くんが書いたプログラムが A+B だとわかるなら +A-B だとわかるなら - 、どちらの可能性もあるなら ? 、 どちらでもないなら ! を出力せよ。出力の末尾には改行をつけること。


入力例1

1 0 1

出力例1

?

A+BA-B のどちらの可能性もあります。


入力例2

1 1 2

出力例2

+

A+B であり、 A-B ではないと判定してください。


入力例3

1 1 0

出力例3

-

A+B ではなく、 A-B だと判定してください。


入力例4

1 1 1

出力例4

!

A+BA-B のどちらでもありません。

C - 友達の友達

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋くんはSNSの管理者をしています。このSNSではユーザ同士が友達という関係で繋がることができます。高橋くんはそれぞれのユーザの「友達の友達」が何人いるかを調べることにしました。友達関係が与えられるので、各ユーザの「友達の友達」の人数を求めてください。ただし、自分自身や友達は、「友達の友達」に含みません。


入力

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

N M
A_1 B_1
A_2 B_2
:
A_M B_M
  • 1 行目には、ユーザ数 N (1≦N≦10) と友達の組の数 M (0≦M≦N×(N-1)/2) がスペース区切りで与えられる。
  • 各ユーザには 1 から N までのユーザIDが割り当てられている。
  • 2 行目からの M 行では、友達関係にあるユーザのID A_i,B_i (1≦A_i がスペース区切りで与えられる。ただし、 i≠j ならば (A_i,B_i)≠(A_j,B_j) を満たす。

出力

各ユーザの友達の友達の人数をユーザIDの小さい順に一行ごと出力せよ。出力の末尾には改行をつけること。


入力例1

3 2
1 2
2 3

出力例1

1
0
1

入力例2

3 3
1 2
1 3
2 3

出力例2

0
0
0

入力例3

8 12
1 6
1 7
1 8
2 5
2 6
3 5
3 6
4 5
4 8
5 6
5 7
7 8

出力例3

4
4
4
5
2
3
4
2
D - 一刀両断

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋くんは鍛錬の結果、空手チョップで木の板を切断できるようになりました。空手チョップの軌道を表す線分と板の形を表す多角形が与えられるので、板がいくつに切断されたか求めてください。


入力

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

A_x A_y B_x B_y
N
X_1 Y_1
X_2 Y_2
:
X_N Y_N
  • 1 行目には、線分の端点の座標 A_x,A_y,B_x,B_y がスペース区切りで与えられる。
  • 2 行目には、多角形の頂点数 N (3≦N≦100) が与えられる。
  • 3 行目からの N 行では、各頂点の座標 X_i,Y_i がスペース区切りで与えられる。
  • 入力で与えられる座標は-1000以上1000以下の整数である。

入力で与えられる線分と多角形は以下の性質を満たす。

  • 多角形の頂点は反時計回りの順で与えられる。
  • 多角形の頂点は線分から0.1以上離れている。
  • 線分の端点は多角形から0.1以上離れている。
  • 線分の端点は多角形の外部にある。
  • 多角形の連続する3頂点が一直線上に並ぶことはない。

すなわち、以下のような入力は与えられない。

  • A,B:多角形の頂点が線分上にある。
  • C:線分の端点が多角形の辺上にある。
  • D:多角形の辺と線分が重なる。
  • E:線分の端点が多角形の内部にある。

出力

板がいくつに切断されるかを出力せよ。出力の末尾には改行をつけること。


入力例1

-2 0 2 0
4
1 1
-1 1
-1 -1
1 -1

出力例1

2

入力例2

-3 1 3 1
8
2 2
1 2
1 0
-1 0
-1 2
-2 2
-2 -1
2 -1

出力例2

3