A - 大文字と小文字

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

英大文字 C と英小文字 c が与えられるので、Cc が同じアルファベットか判定してください。

制約

  • C は英大文字である。
  • c は英小文字である。

入力

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

C c

出力

Cc が同じアルファベットならば Yes を、そうでなければ No を出力せよ。


入力例1

A a

出力例1

Yes

入力例2

B c

出力例2

No

入力例3

Z z

出力例3

Yes
B - 花束

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

高橋君は赤い花を R 本、青い花を B 本持っています。高橋君は次の 2 種類の花束を作ることができます。

  • x 本の赤い花と 1 本の青い花からなる花束
  • 1 本の赤い花と y 本の青い花からなる花束

高橋君が作ることのできる花束の個数の最大値を求めてください。すべての花を使い切る必要はありません。

制約

  • 1≦R,B≦10^{18}
  • 2≦x,y≦10^9

入力

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

R B
x y

出力

高橋君が作ることのできる花束の個数の最大値を出力せよ。


入力例1

5 5
3 4

出力例1

2

3 本の赤い花と 1 本の青い花からなる花束」を 1 個と、「1 本の赤い花と 4 本の青い花からなる花束」を 1 個作ればよいです。このとき、赤い花が 1 本余ります。


入力例2

10 20
2 2

出力例2

10

1 本の赤い花と 2 本の青い花からなる花束」を 10 個作ればよいです。


入力例3

1 1
2 2

出力例3

0

入力例4

10000000000 10000000000
4 3

出力例4

4545454545

入力値および出力値は 32 bit 整数型に収まらない場合があります。

C - LCM 111

Time Limit: 2 sec / Memory Limit: 256 MB

問題文

数字の 1A 個並べてできる整数を x とします。また、数字の 1B 個並べてできる整数を y とします。xy の最小公倍数を M で割った余りを求めてください。

制約

  • 1≦A,B≦10^{18}
  • 2≦M≦10^9

入力

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

A B M

出力

xy の最小公倍数を M で割った余りを出力せよ。


入力例1

2 3 100

出力例1

21

11111 の最小公倍数は 1221 なので、それを 100 で割った余りは 21 となります。


入力例2

2 2 121

出力例2

11

入力例3

10000000000 1 10007

出力例3

825

入力値は 32 bit 整数型に収まらない場合があります。

D - Suffix Concat

Time Limit: 4 sec / Memory Limit: 256 MB

問題文

長さ N の文字列 S が与えられます。各 i (1≦i≦N) について、Si 文字目から N 文字目までの部分文字列を S_i と呼ぶことにします。

S_1S_2...S_N を好きな順番で連結して得られる文字列のうち、辞書順で最小のものを求めてください。

制約

  • 1≦N≦10^5
  • S の長さは N である。
  • S は英小文字のみからなる。

入力

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

N
S

出力

N 行出力せよ。i 行目には p_i を出力せよ。

ただし、(p_1,p_2,...,p_N) は、1 から N までの順列であって、次の条件を満たすものである。

  • S_{p_1}S_{p_2}...S_{p_N} をこの順番で連結して得られる文字列が、辞書順で最小である。

(p_1,p_2,...,p_N) が複数通りある場合、どれを出力してもよい。


入力例1

3
arc

出力例1

1
3
2

arccrc の順番で連結して得られる arccrc が、辞書順で最小です。


入力例2

2
zz

出力例2

1
2

他には、21 の順番で出力してもよいです。


入力例3

5
abaab

出力例3

3
1
4
2
5