提出詳細
ソースコード
#最小公倍数を求めるには
d_txt = open ('D.txt', 'r')
d_result = open ('D_Result.txt', 'w')
t = int(d_txt.readline())
for i in range(1, t + 1):
edge = list(map(int,d_txt.readline().split()))
d_result.write('Case #' + str(t) + ':\n')
#縦と横の約数を求める
divisor = [[0, 0], [0, 0]]
for j in range(2):
n = 2
while edge[j] != 1:
divisor [j].append(0)
while edge[j] % n == 0:
divisor [j][n] += 1
edge[j] /= n
n += 1
len_diffe = len(divisor[0]) - len(divisor[1])
#最大の約数の方に揃える
if len_diffe != 0:
if len_diffe > 0:
for i in range (len_diffe):
divisor[1].append(0)
else:
for i in range (len_diffe):
divisor[0].append(0)
#約数の個数が大きい方に揃える
for i in range(2, len(divisor[0]) - 2):
if divisor[0][i] < divisor[1][i]:
divisor[0][i] = divisor[1][i]
#約数の総数分掛け算する
ans = 1
for i in range(2, len(divisor[0]) - 2):
while divisor[0][i] != 0:
ans *= i
divisor[0][i] -= 1
d_result.write(str(ans) + '\n')
提出情報
提出出力結果
テストケース情報
# |
状態 |
詳細情報 |
正解か誤答の場合のみ表示されます. |