AtCoder Regular Contest 131の解説記事です。
目次
ARC131 A – Two Lucky Numbers
問題
問題文の要約は以下の通りです。
問題の要約
x を十進法で書いたときに、連続する部分文字列として A が現れ、2x を十進法で書いたときに、連続する部分文字列として B が現れるような x を求めよ。
制約
- \(1 \le A < 10^{8}\)
- \(1 \le B < 10^{8}\)
- A,B の先頭に余分な
0
は現れない - 入力はすべて整数
入力
A
B
出力
\(10^{8}\) 未満の答えを一つ出力せよ。
解法
AとBを文字列として結合する。
解説
Bが偶数の時を考えると、2倍してBになる数はBの1/2倍となるため、AとBの1/2倍を文字列として結合しておけば、上位桁はAとなり、下位の桁は2倍してBになります。
if b%2==0:
ans=a+str(b//2)
Bが奇数の時を考えると、2倍してBになる数はBの1/2倍の整数部分に1を足した数となるため、AとBの1/2倍と2倍したときに桁上がりとなる5を文字列として結合しておけば、上位桁はAとなり、下位の桁は2倍してBになります。
else:
ans=a+str(b//2)+'5'
解答
a=input()
b=int(input())
if b%2==0:
ans=a+str(b//2)
else:
ans=a+str(b//2)+'5'
print(ans)