A問題 ABC/ARC
1 2 3 4 5 |
x = int(input()) if x < 1200: print('ABC') else: print('ARC') |
B問題 A to Z String
1 2 3 4 5 |
s = input() A = s.find('A') #文字列sの中の最初のAの位置を取得 Z = s.rfind('Z')#文字列sの中の最後のZの位置を取得 print(Z-A+1) |
文字列sの中から
‘AADZZ’ などAとZが複数ある場合は、入力例より最初のAと最後のZを使うようです。
find()はカッコの中で指定した引数を文字列の中から探します。左から探していくので最初の位置を返します。
rfind()は指定した文字列の最後の位置を返します。(右から探した場合の最初の位置)
関連
Pythonで文字列を検索(〜を含むか判定、位置取得、カウント)
C問題 X: Yet Another Die Game
方針
最短で一定以上の数字になれば良いので、サイコロの目は値が大きい6と5を交互に出せばよいです。
6と5しか出ないということは6と5の目がでる2回を1セットとして11が繰り返し出ると考えることができます。
そのため、11で割った数×2と以下の3つのうちどれかを加えた数字が答えになります。
※×2としているのは、6と5を交互に出しているため。
①x÷11の余りが0 (11で割り切れた場合)→11//2*2が答え
②x%11の余りが6以下ならあと1回の操作だけなので、11//2*2+1
③x%11の余りが7~10ならあと2回の操作だけなので、11//2*2+2
解答
1 2 3 4 5 6 7 8 9 10 11 12 |
x = int(input()) count = x//11 *2 x = x%11 if x==0: print(count) exit() elif x <=6: count+=1 else: count+=2 print(count) |
コメント