[解答]白俊1024号数列の和


問題の説明


NとLが与えられた場合、最小の連続音符ではなく、少なくともLの整数リストを解くプログラムを作成します.

変数の説明


  • N
  • タイプ:int
  • 格納データ:合計

  • L
  • タイプ:int
  • 格納データ:最小長値
  • を格納

  • temp
  • タイプ:str
  • 格納データ:
  • 出力する文字列を格納

  • x

  • タイプ:int

  • データの保存:計算式の保存
  • 解法



  • 入力和の最小長さ[N,L]

  • for文からLから100を繰り返す

  • n(i+1)2frac{n-(i*(i+1)}{2}2 N(i+1)値をxxxに保存

  • xxxがiiiに下がると、xxxをiiiに分割し、値をxxxに再保存します.

  • xxxが-1より大きい場合はiiiを繰り返し、jjjの値を文字列として保存する[temp]

  • import sys
    
    N, L = map(int, sys.stdin.readline().split())
    
    for i in range(L, 101):  # L은 2보다 크거나 같고, 100보다 작거나 같은 자연수 이기 때문에 100까지만 반복
        x = N - (i * (i + 1) / 2)
        # x = (N - L * ( L + 1) // 2) // L
        temp = ""
    
        if x % i == 0:
            x = int(x / i)
    
            if x >= -1:
                for j in range(1, i + 1):
                    temp += f"{x + j} "
                print(temp)
                break
    else:
        print(-1)