+ Нов въпрос
Tryhard 1 Точки

## 1.Number Beggars

Your task here is pretty simple: given a list of numbers and a number of beggars, you are supposed to return a list with the sum of what each beggar brings home, assuming they all take regular turns, from the first to the last.

For example: [1,2,3,4,5] for 2 beggars will return a result of 9 and 6, as the first one takes [1,3,5], the second collects [2,4].

The same list with 3 beggars would produce a better outcome for the second beggar: 5, 7 and 3, as they will respectively take [1, 4], [2, 5] and [3].

Also note that not all beggars have to take the same amount of "offers", meaning that the length of the list is not necessarily a multiple of n; length can be even shorter, in which case the last beggars will of course take nothing (0).

### Input

You will receive 2 lines of input: a single string containing the numbers separated by a comma and a space ", ". On the second line you will receive the number of beggars.

### Output

Print a list of all the sums that each beggar got.

INPUT                  OUTPUT |         INPUT                      OUTPUT

1, 2, 3, 4, 5             [9, 6]      |         3, 4, 5, 1, 29, 4          [3, 4, 5, 1, 29, 4]

2                                           |        6

Тагове:
1
ItsMomchilS 28 Точки

Както и да е, намерих го. Тествах един код и работи 100/100. Ако искаш ми прати твоя код да го погледна и да ти кажа къде е проблема.

П.С. Наистина е доста объркващ, но главно като зациклиш с такива задачи търси в интернет. Винаги има отговори!

Ето го кода ми:

```numbers_list = [int(x) for x in input().split(", ")]
number_of_beggars = int(input())

beggars_list = [0] * number_of_beggars

for num in range(len(beggars_list)):
current_beggar = num
for n in range(len(numbers_list)):
current_num = n % number_of_beggars
if current_num == current_beggar:
if beggars_list[num] == 0:
if numbers_list[n] == 0:
beggars_list[current_num] = 0
break
beggars_list[current_num] = numbers_list[n]
else:
beggars_list[current_num] += numbers_list[n]

print(beggars_list)
```
0
25/10/2020 15:28:38
Antoan.Stefanov 3 Точки

Понеже не мога да разбера този код , ка моли да го напиша , можеш ли да ми дадеш съвет какво да предприема като действие ?
Дебъгвам и дебъгвам , но не схващам логиката ... притесних се до известна степен , как да разбера кода ?

0
ItsMomchilS 28 Точки

Добре ще ти го обясня по-описателно.

Правиш лист за първия input и ги разделяш с ',' (чрез comprehension) , след това другия input се подразбира.:

`numbers_list = [int(x) for x in input().split(", ")]`

Тази част прави в този случей един лист с толкова нули колкото са просяците, за да може сле това в loop-a да се пълнят в зависимост кой е под ред:

```beggars_list = [0] * number_of_beggars
```

След това първия for цикъл прави така че да вземе всеки един от всички просяци, и current_beggar е равен на текущия просяк.:

```for num in range(len(beggars_list)):
current_beggar = num```

Тук този for цикъл минава през листа със всички числа които трябва да се разпределят на просяците в зависимост от реда им. current_num проверява чрез %,

проверява дали е равно на 0, щом е равно на 0 значи се дели на сегашния просяк без остатък и това значи че е той. А другия if под него проверява дали този просяк има пари.

```for n in range(len(numbers_list)):
current_num = n % number_of_beggars
if current_num == current_beggar:
След това следващия if проверя дали има пари. Защото ако няма това значи че листа с парите е свършил и на следващите просяци ще дава по 0.```

В примерите има някой просяци, които са повече от парите и в този случеи е нужен този if.

```if numbers_list[n] == 0:
beggars_list[current_num] = 0
break```

Aко ли не то под него има там където да се добавят първите пари. Ето това.

```beggars_list[current_num] = numbers_list[n]
```

И след това else е щом просяка вече е получавал пари да се добавят към онези.

```else:
beggars_list[current_num] += numbers_list[n]```

И накрая принтира листа който трябва да е output-a на този код.

`print(beggars_list)`

Надявам се този път да беше по-добре обяснено. Ако има все пак нещо, което не е ясно ме питай! :)

0
01/11/2020 20:38:44
Antoan.Stefanov 3 Точки

Много ти благодаря за обяснението , ще го разгледам утре на трезва глава ... (От следобед до сега ми се изпари акъла).
При объркани задачи с if-ове нямам особени проблеми , но при  вложените цикли - греда.
Ако има нещо ще ти пиша отново ! :D

0
ItsMomchilS 28 Точки

Здравей, можеш ли само да пратиш линк на задачата в judge?

Meрси!

0
vigyriousx 10 Точки
``````coins = [int(num) for num in input().split(", ")]
beggars = int(input())
count = 0
beggars_list = [0] * beggars
for coin in coins:
beggars_list[count] += coin
count += 1
if count >= beggars:
count = 0
print(beggars_list)``````

Ето и моето решение на задачката. 100/100

1
Ina_K 3 Точки

Много леко и добро решение. Браво!

1
Julianh12 3 Точки
```coins=[int(num) for num in input().split(", ")]
number_beggars=int(input())
list_beggers=[0]*number_beggars
count=0
for i in range(len(coins)):
list_beggers[count]+=coins[i]
count+=1
if count>=number_beggars:
count=0
print(list_beggers)
```
0
D1mitroV 7 Точки

Просто перфектно,много хитро решение..Поздравления

1
krum_43 749 Точки

Ето и едно решение на C#

using System;
using System.Linq;

namespace Number_Beggars
{
class Program
{
static void Main(string[] args)
{
int[] inputDate = line.Split(",").Select(int.Parse).ToArray();
int[] outputDate = new int[numberOfBeggars];
for (int i = 0;i<inputDate.Length;i++)
{
int currentNumber = i % numberOfBeggars;
outputDate[currentNumber]+= inputDate[i];
}
Console.Write("[");
Console.Write(String.Join(",",outputDate));
Console.WriteLine("]");
}
}
}

1
RosieIvanova 1 Точки

Ето и моето решение след ужасно много умуване:

coins = input().split(", ")
count_beggars = int(input())
list_beggars = [0] * count_beggars
index = 0

while len(coins) > 0:
list_beggars[index] += int(coins[0])
coins.remove(coins[0])
index += 1
if index >= count_beggars:
index = 0
else:
print(list_beggars)

0
11/06/2022 17:13:03
Daooobg 1 Точки
```numbers_list = [int(num) for num in input().split(', ')]
number_of_beggars = int(input())

beggars_sum = [0] * number_of_beggars

for index, num in enumerate(numbers_list):
beggars_sum[index % number_of_beggars] += num

print(beggars_sum)```
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.