问题陈述:
萨钦很喜欢甜食 . 所以,他去了一个糖果市场 . 有一排甜蜜的摊位 . 每个甜点都有不同的甜点 . 为了省时间,他决定从邻近的摊位买糖果 . 因此,他可以从他想要的多个摊位购买,但所有这些摊位都需要连续 . 他还决定从每个摊位购买1公斤糖果 . 给出每个摊位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
我使用这个代码解决了这个问题,我仍然在比赛中获得0 :(
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))
请帮我找到我正在做的错误
4 回答
据我所知:
假设价格是a,b和c
现在我们假设所有产品的总价格是"x"
这意味着你要找的数字是"ax + bx + cx",因为这是可能的价格的乘积,它等于(abc)x => x * x所以如果给你一个数字列表,你只需要总结它们,然后你会得到"x"然后你知道其余的,不是吗?
如果你从最后一个档位向后工作,问题就可以简化了 . 请考虑以下代码:
通过删除“最后一档”(因为我们正在向后工作),我们找到了参加其他档位的所有可能组合 . 然后,我们可以计算每个成本,并将它们添加到运行总计中 .
我的代码将解决您的问题,而且不是那么大 . (python ver 3.6.2)