首页 文章

为什么我会收到错误

提问于
浏览
-8

问题陈述:
萨钦很喜欢甜食 . 所以,他去了一个糖果市场 . 有一排甜蜜的摊位 . 每个甜点都有不同的甜点 . 为了省时间,他决定从邻近的摊位买糖果 . 因此,他可以从他想要的多个摊位购买,但所有这些摊位都需要连续 . 他还决定从每个摊位购买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 回答

  • 0

    据我所知:
    假设价格是a,b和c
    现在我们假设所有产品的总价格是"x"
    这意味着你要找的数字是"ax + bx + cx",因为这是可能的价格的乘积,它等于(abc)x => x * x所以如果给你一个数字列表,你只需要总结它们,然后你会得到"x"然后你知道其余的,不是吗?

  • 0

    如果你从最后一个档位向后工作,问题就可以简化了 . 请考虑以下代码:

    import itertools
    
    test = [3,1,2,3]
    
    cum_cost = 0
    
    for num_visits in range(1,len(test)+1):
        print('Number of Visits: ',num_visits)
        for end_stall in test:
            print('\tEnd Stall',end_stall)
            remaining_stalls = test[:]
            remaining_stalls.remove(end_stall)
            visits_left = num_visits - 1
            stalls_left = len(remaining_stalls)
            perms = itertools.permutations(remaining_stalls,visits_left)
            perms1, perms2 = itertools.tee(perms)
            p = [perm for perm in perms1]
            s = sum([sum(perm)+end_stall for perm in perms2])*end_stall
            print('\t\tVisits left',visits_left)
            print('\t\tStalls left',stalls_left)
            print('\t\tpermutations',p)
            print('\t\tSum',s,' Running Sum',cum_cost)
            cum_cost+=s
        print('\n')
    print('Grand Total',cum_cost)
    

    通过删除“最后一档”(因为我们正在向后工作),我们找到了参加其他档位的所有可能组合 . 然后,我们可以计算每个成本,并将它们添加到运行总计中 .

  • 0
    int possibleways(int input1_size,int *input1)
    {
    
        unsigned int pow_set_size = pow(2, input1_size);
        int counter, j;
    
        for(counter = 0; counter < pow_set_size; counter++)
        {
          for(j = 0; j < set_size; j++)
           {
              /* Check if jth bit in the counter is set
                 If set then pront jth element from set */
              if(counter & (1<<j))
                printf("%d", input1[j]);
           }
           printf("\n");
        }
    }
    
    
    // I wrote this code it showed the output still , I got 0 in  exam competition.
    
  • 0

    我的代码将解决您的问题,而且不是那么大 . (python ver 3.6.2)

    length = int(input())
    if (length >=1 and length <= 10^5):
        shop = list(map(int, input().strip()))
    Sum = 0
    flag = len(shop)
    while (flag != 0):
        for i in range(len(shop),0,-1):
            Shop = shop[i-1:]
            l= len(Shop)
            for _ in Shop:
                Sum = Sum + _*Shop[l-1]
        shop.pop()
        flag = len(shop)
    print(Sum)
    

相关问题