Можно воспользоваться вариантом Vladmor, он более легкий и подходит под эту задачу, но чтобы не повторяться, для разнообразности, предложу свой вариант.
1+3+5+7 это ничто иное как арифметическая прогрессия. Есть несколько формул суммы членов прогрессии, но под этот тип задачи подойдёт такая:
- это член последовательности с индексом 1, то есть первое число в ряду. d - это разность между двумя соседними членами, из большего вычитаем меньшее
n - это сколько всего членов
и так, у нас получается = 1 (в условии задачи сказано что первый подарок весит 1кг) d = 2 (в условии сказано что следующий подарок увеличивается на 2, ничто иное как разность) n = это переменная, она нам не известна, поэтому так и оставим. - это сумма веса всех подарков, в примере используется слово "weight" что в переводе "вес", поэтому подставим это слово.
И теперь подставим что у нас имеется. weight = weight =
В коде программу будет записано так weight = ( ( 2+2*(n-1) ) / 2)*n
Проверим, например у нас 5 детей, значит надо 5 подарков, это 1+3+5+7+9 = 25 Проверим формулу weight = ( ( 2+2*(5-1) ) / 2)*5 weight = ( ( 2+2*4 ) / 2)*5 weight = ( ( 2+8 ) / 2)*5 weight = ( 10 / 2)*5 weight = 5*5 weight = 25 Всё сходится.
Расписал подробно, чтобы всё было понятно Так же этот вариант подойдёт для других таких типовых задач, а вариант Vladmor подойдёт только в некоторых случаях, будь внимателен(на)
! инверсия значения
& побитовое И
^ исключающее ИЛИ
| побитовое ИЛИ
7(10) = 00111(2)
11(10) = 01011(2)
21(10) = 10101(2)
25(10) = 11001(2)
31(10) = 11111(2)
11 & 7 = 01011 & 00111 = 00011
11 & !7 = 01011 & 11000 = 01000
11 & 7 | 11 & !7 = 00011 | 01000 = 01011
11 & 7 = 01011 & 00111 = 00011
!11 & 7 = 10100 & 00111 = 00100
11 & 7 | !11 & 7 = 00011 | 00100 = 00111
7 & 31 = 00111 & 11111 = 00111
(7 & 31 | (11 & 7 | !11 & 7)) = 00111 | 00111 = 00111
25 & 31 = 11001 & 11111 = 11001
25 | 25 & 31 = 11001 | 11001 = 11001
(7 & 31 | (11 & 7 | !11 & 7)) & (25 | 25 & 31) = 00111 & 11001 = 00001
31^(11 & 7 | 11 & !7) = 11111 ^ 01011 = 10100
31^(11 & 7 | 11 & !7) ^ 21 = 10100 ^ 10101 = 00001
(7 & 31 | (11 & 7 | !11 & 7)) & (25 | 25 & 31) ^ 21 = 00001 ^ 10101 = 10100
31^(11 & 7 | 11 & !7) ^ 21 | (7 & 31 | (11 & 7 | !11 & 7)) & (25 | 25 & 31) ^ 21 =
00001 | 10100 = 10101
10101(2) = 21(10)