I want to generate a list from user entered number using Python
I had tried it but I was unable to find out the proper solution for it.
예를 들면 :
사용자가 2를 입력하면 목록은 [1,1]이어야합니다.
사용자가 11을 입력하면 목록은 [1,2,3,4,1]이어야합니다.
사용자가 12를 입력하면 목록은 [1,2,3,4,2] 여야합니다.
사용자가 16을 입력하면 목록은 [1,2,3,4,5,1]이어야합니다.
사용자가 24를 입력하면 목록은 [1,2,3,4,5,6,3]이어야합니다.
규칙 :
maxNum, current, result = 12, 1, []
while maxNum > current:
result.append(current)
maxNum -= current
current += 1
result.append(maxNum)
print result
산출
[1, 2, 3, 4, 2]
편집하다:
수학적 솔루션 :
inputNumber = int(raw_input("Please enter the input number: "))
a, b, c = 1, 1, -2 * inputNumber
innerPart = ((b**2) - 4 * a * c)**0.5
N = int(max((-b + innerPart) / (2 * a), (-b - innerPart) / (2 * a)))
result, sumTillN = [i for i in range(1, N + 1)], (N * (N + 1)) // 2
if inputNumber - sumTillN: result.append(inputNumber - sumTillN)
print result
처음 N-1 요소는 N (N + 1) / 2 공식을 사용하여 계산할 수 있습니다. N^2+N-2*inputNumber
첫 번째 N-1 요소에 대해 양의 N을 찾아 채울 수 있습니다 . 마지막 요소는 나머지입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다