A - サイコロ

Time Limit: 2 sec / Memory Limit: 64 MB

問題文

サイコロが 1 つあります。このサイコロは、 1 から 6 までの数字が一つずつ書かれており、対面の和が 7 になるように作られています。

今、サイコロの上の面に書かれている数字が、 A であることが解っています。

この対面にある、底面に書かれた数字を出力してください。


入力

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

A
  • 1 行目には、サイコロの上の面に書かれている数字を表す 1 つの整数 A (1 ≦ A ≦ 6) が与えられる。

出力

サイコロの底の面に書かれている数字を 1 行で出力せよ。出力の末尾には改行をいれること。


入力例1

6

出力例1

1

6 の裏に書かれている数字は 1 です。


入力例2

3

出力例2

4

Source Name

Code Formula 2014 予選B
B - 11の倍数

Time Limit: 2 sec / Memory Limit: 64 MB

問題文

11 で割り切れる数には、奇数桁の数の和と、偶数桁の数の和を比べると、差が 11 の倍数になっている、という性質があります。この際、一の位を 1 桁目、十の位を 2 桁目、というように、小さい数字から数えていくことに注意してください。

例えば、 7392 という数字について、偶数桁に存在する数字は、 2 桁目の 9 と、 4 桁目の 7 であり、その和は 16です。 奇数桁に存在する数字は、 1 桁目の 2 と、 3 桁目の 3 であり、この和は 5 です。 165 の差は 11 であり、上記の性質を満たします。

あなたは、 与えられた整数が、 11 の倍数であるかどうか調べたいです。そのため、偶数桁の数の和と、奇数桁の数の和を求めようと思っています。この 2 つの値を出力するプログラムを書いてください。


入力

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

N
  • 1 行目には、11 の倍数であるかどうかを調べたい整数 N (1 ≦ N ≦ 10^{1000} - 1) が与えられる。

出力

偶数桁の数の和と、奇数桁の数の和を、スペース区切りで 1 行で出力しなさい。 出力の末尾には改行をいれること。


入力例1

7392

出力例1

16 5

問題文で説明した例です。


入力例2

12345

出力例2

6 9

11 の倍数でない入力も与えられます。


入力例3

917237645269816381478124891628461341894621418946786785634501961

出力例3

142 163

大きな数が与えられることがあることにも注意してください。


Source Name

Code Formula 2014 予選B
C - 仲良し文字列

Time Limit: 2 sec / Memory Limit: 64 MB

問題文

(21:13 追記) |A|=|B|=1のケースがテスト中に一つ含まれていましたので、リジャッジを行います。なお、このケースでNOを出力するプログラムに影響はありません。

文字列 A の文字をちょうど 3 回スワップすることにより、文字列 B に変換できるとき、二つの文字列 A, B を、仲良し文字列と呼ぶことにします。

スワップとは、文字列に含まれる 2 つの文字を、入れ替えることを指します。 例えば、abcという文字列であれば、acを入れ替えて、cbaのように変換することが出来ます。

aaのような文字列に対し、 1 文字目のaと、 2 文字目のaを入れ替えることは許されていますが、同じ場所の文字を指定することはできません。

文字列 A, B が与えられるので、仲良し文字列になっているかどうかを判定しなさい。


入力

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

A
B
  • 1 行目には、文字列 A (2 ≦ |A|≦ 1000) が与えられる。
  • 2 行目には、文字列 B (|B| = |A|) が与えられる。
  • A, B 共に、小文字アルファベットのみで構成されていることが保障されている。

出力

与えられた 2 つの文字列が、仲良し文字列であればYES、そうでなければNOを出力せよ。 出力の末尾には改行をいれること。


入力例1

abcdef
fedcba

出力例1

YES

まず、文字列 Aabcdefafをスワップし、fbcdeaとします。

次に、beをスワップし、fecdbaとします。

最後に、cdをスワップし、fedcbaとすると、文字列 B と一致します。

よって、この 2 つの文字列は、仲良し文字列となるため、YESと出力します。


入力例2

abababab
babababa

出力例2

NO

使っている文字数が同じでも、 3 回のスワップでは同じ文字列にできないパターンも存在します。


入力例3

nt
nt

出力例3

NO

スワップの仕方が 1 通りしかなく、 3 回のスワップを繰り返すと、tnになってしまいます。 よって、同じ 2 つの文字列ですが、仲良し文字列ではありません。


入力例4

pqqq
pqqq

出力例4

YES

まず、 1 番目の文字と 2 番目の文字を入れ替え、qpqqとします。 次に、 3 番目の文字と 4 番目の文字を入れ替え、qpqqとします。この際、同じ文字を選んでいますが、場所が違うので問題ありません。 最後に、1番目の文字と、2番目の文字を入れ替え、pqqqとします。


入力例5

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvxyzw
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

出力例5

YES

長い文字列が与えらえれることがあることにも注意してください。


入力例6

abcdef
ghijkl

出力例6

NO

Source Name

Code Formula 2014 予選B
D - お釣りの嫌いな高橋君

Time Limit: 2 sec / Memory Limit: 64 MB

問題文

高橋君の国では、N 種類の硬貨が使われています。 1 番目の硬貨の価値は 1 円です。 k 番目の硬貨の価値は、k-1 番目の硬貨の 10 倍あります。 つまり、2 番目の硬貨は 10 円の価値があり、5 番目の硬貨は 10000 円の価値があります。

高橋君は、お釣りが嫌いです。なので、出来るだけぴったりの金額で買い物がしたいと思っています。 そこで高橋君は、今持っている硬貨で、何種類の金額が払えるかを調べたいと思いました。

高橋君が払える金額が何通りあるかを出力しなさい。 ただし、これは膨大な数となるため、 1000000007 以上となる場合は、 1000000007 で割った余りを出力しなさい。


入力

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

N
A_1
A_2
:
A_N
  • 1 行目には、硬貨の種類数 N (1 ≦ N ≦ 50) が、1 行で与えられる。
  • 2 行目から N 行では、高橋君が各硬貨を何枚持っているかが与えられる。 このうち i(1≦i≦N) 行目では、 i 番目の硬貨を、高橋君が何枚持っているかを表す整数 A_i(0≦A_i≦50000)が与えられる。

出力

高橋君が払える金額の種類数を、 1000000007 で割った余りを 1 行で出力せよ。出力の末尾は改行をいれること。


入力例1

2
2
1

出力例1

5

払える金額は、1 円, 2 円, 10 円, 11 円, 12 円の 5 通りとなります。

0 円は含まないことに注意してください。


入力例2

2
32
3

出力例2

62

1 円から 62 円の 62 通りの金額を支払うことが出来ます。


入力例3

4
12
3
7
34

出力例3

12039

入力例4

10
1234
2
857
3858
1
5000
32
4
1
857

出力例4

969347336

1000000007 で割った余りを出力してください。


Source Name

Code Formula 2014 予選B