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 予選BTime Limit: 2 sec / Memory Limit: 64 MB
問題文
11 で割り切れる数には、奇数桁の数の和と、偶数桁の数の和を比べると、差が 11 の倍数になっている、という性質があります。この際、一の位を 1 桁目、十の位を 2 桁目、というように、小さい数字から数えていくことに注意してください。
例えば、 7392 という数字について、偶数桁に存在する数字は、 2 桁目の 9 と、 4 桁目の 7 であり、その和は 16です。 奇数桁に存在する数字は、 1 桁目の 2 と、 3 桁目の 3 であり、この和は 5 です。 16 と 5 の差は 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 予選BTime Limit: 2 sec / Memory Limit: 64 MB
問題文
(21:13 追記) |A|=|B|=1のケースがテスト中に一つ含まれていましたので、リジャッジを行います。なお、このケースでNO
を出力するプログラムに影響はありません。
文字列 A の文字をちょうど 3 回スワップすることにより、文字列 B に変換できるとき、二つの文字列 A, B を、仲良し文字列と呼ぶことにします。
スワップとは、文字列に含まれる 2 つの文字を、入れ替えることを指します。
例えば、abc
という文字列であれば、a
とc
を入れ替えて、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
まず、文字列 A のabcdef
のa
とf
をスワップし、fbcdea
とします。
次に、b
とe
をスワップし、fecdba
とします。
最後に、c
とd
をスワップし、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 予選BTime 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 で割った余りを出力してください。