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

## 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

Тагове:
0
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 1 Точки

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

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 1 Точки

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

0
ItsMomchilS 28 Точки

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

Meрси!

0