2839号:砂糖送り[python]


これは白準アルゴリズムの2839番の問題です.
  • 先にやろう
  • num = int(input())  
    
    quotient_5 = int(num / 5)   
    remains_5 = num % 5     
    
    if remains_5 == 0:      # 5로 나눈 나머지가 0이면 최소 개수
        result = quotient_5
    elif num == 4 or num == 7 or num < 3:   # 나눌 수 없는 수 1, 2, 4, 7
        result = -1
    else:
        for i in range(quotient_5 + 1):     # 5의 개수를 하나씩 줄여가며 나머지를 3으로 나누어본다. 
            tmp = num - (quotient_5 - i) * 5    
            quotient_3 = int(tmp / 3)   
            remains_3 = tmp % 3
            if remains_3 == 0:
                result = quotient_3 + (quotient_5 - i)  # 3으로 나눈 나머지가 0이면 최소 개수
                break
    
    print(result)
    袋の最小個数は5キロかもしれませんが、残りは0です.
    Nキロを入力し、5キロに分けなければ、5キロ袋の個数を1つ減らし、残りを3キロに分けます.このとき3 kgの残りが0であれば、最大袋数です.
    このとき4つの数が3キロと5キロに分けられない.1、2、4、7は4つの数を1つの式に抽象化できる方法が思いつかないので、まずそれぞれの条件でフィルタリングします.