[BOJ]1024(python)


|1特

def solution(N, L):

    #print(N // L)
    now = L

    while now <= 100:

        #짝수 -> 
        point = N // now

        if now % 2 == 0:
            if point - (now / 2) < 0:
                break
            if 2 * point + 1 == N / (now / 2):
                #print("even porint ::: " + str(point))
                start = point - (now // 2)
                return [num for num in range(start , start + now)]
        # 홀수
        else:
            if (point - 1) - (now - 1) / 2 < 0:
                break
            if point == N // now:
                start = int(point - (now - 1) // 2)
                return [num for num in range(start ,start + now)]
        now += 1 

    return -1

N, L = map(int, input().split())
print(solution(N, L))
  • 偶数と奇数を別々に計算しようとしたが、
  • に失敗した.
  • 当初は文字列を返させてもらいましたが、リストを返す奇妙な行為(?)どうせだめなコード
  • を変更しても、実行時にエラーが発生する

  • |2~n

    
    def solution(N, L):
    
        for length in range(L, 101):
            start = (N - length * (length -1) / 2) / length
            int_start = int(start)
    
            if start == int_start and int_start >= 0:
                return " ".join(map(str, [num for num in range(int_start, int_start + length)]))
    
        return -1 
    
    
    
    N , L = map(int, input().split())
    print(solution(N, L))
    
  • N=開始数字+(開始数字+1)+...+式(高校数学が必要)
  • を作成するには(開始数字+L-1)を使用します.
    N = L * 시작숫자 + L * (L - 1) / 2 
    시작숫자 = (N - L*(L - 1) / 2) / L
  • 開始数字は0以上の整数(驚くべきことに0から)
  • でなければなりません.
  • リストを返すのではなくstr値を返すので、リストを文字列(これは漏れていて、多くの間違いがある)
  • に変換します.
  • 長さが100を超えるか、まったくできない場合は-1
  • を返します.

    今日の結論は問題をよく読むことです...🤦‍♀️