提出詳細


ソースコード

#最小公倍数を求めるには 
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')

提出情報

提出時間 2020-11-10 10:24:21
問題 D - 寺子スクエア
ユーザ名 topaz_nirvana
状態 形式違反
正解率 N/A
提出出力結果

テストケース情報

# 状態 詳細情報
正解か誤答の場合のみ表示されます.