문제 설명 :
사친은 과자를 아주 좋아합니다. 그래서 그는 과자 시장에 간다. 달콤한 포장 마차가 있습니다. 모든 달콤한 포장 마차는 과자가 다릅니다. 시간을 절약하기 위해 그는 연속 된 포장 마차에서 과자를 사기로 결정했습니다. 그래서, 그는 그가 원하는만큼 많은 매점에서 살 수 있지만, 모든 매점은 인접 해 있어야합니다. 그는 또한 각 포장 마차에서 단 1kg의 과자를 사기로 결정했습니다. 각 실속을위한 과자 1 킬로그램의 비용이 주어집니다. 저 시장 안에 청구의 이상한 규칙 있는다. 그리고 그 규칙은 다음과 같습니다 - 모든 과자 구매의 총 비용은 모든 과자의 비용과 그가 구입 한 달콤한 비용을 곱한 값입니다. 예 : 과자의 총 비용보다 같은 순서로 2, 3, 4의 가격을 가진 과자를 사면 2 * 4 + 3 * 4 + 4 * 4 = 36이됩니다. 이제 그는 과자를 사기위한 가능한 모든 방법의 총비용이 무엇인지 궁금합니다. 당신은 그를 도울 수 있습니까? 이 숫자가 클 수 있으므로 최종 결과의 모듈러스를 10^9 + 7로 가져와야합니다.
예
샘플 테스트 케이스 1오류가 발생하는 이유
Input
3
1
2
3
Output
53
Explanation
Possible ways of buying sweets are-
a) 1
b) 1 2
c) 2
d) 1 2 3
e) 2 3
f) 3
cost of each of these is following-
a) 1*1= 1
b) 1*2+2*2= 6
c) 2*2= 4
d) 1*3+2*3+3*3= 18
e) 2*3+3*3= 15
f) 3*3= 9
나는 여전히 내가 경쟁 :(
import sys
import os
def possibleways(input1):
t1 = []
s = 0
big_num = 10**9 + 7
for i in range(len(input1)):
for j in range(i + 1, len(input1) + 1):
l1 = []
for k in range(i, j):
l1.append(input1[k])
t1.append(l1)
# print(t1)
for x in t1:
last_element = x[-1]
# print("last_element", last_element)
s += (sum(x) * last_element) % big_num
# print(s)
return s % big_num
# return ts
ip1_cnt = 0
ip1_cnt = int(input())
ip1_i = 0
ip1 = []
while ip1_i < ip1_cnt:
ip1_item = int(input())
ip1.append(ip1_item)
ip1_i += 1
output = possibleways(ip1)
print(str(output))
은 내가 실수를 찾기 위해 도와주세요 0을 얻고,이 코드를 사용하여이 문제를 해결 하고있는 것
하위 구성이 너무 느리며 엄청난 양의 메모리를 사용합니다. (입력 값은 100,000입니다.) – molbdnilo
@molbdnilo 어떻게 최적화 할 수 있습니까? 나 좀 도와 주실 래요? –