PascalABC.NET function ToBinary (x:integer):string; beginif (x>0) then ToBinary := ToBinary(x div 2) + (x mod 2).ToString;end; function FromBinary (x:string):integer; beginif (x.Length>0) then FromBinary := FromBinary(x.Substring(1)) + x[1].ToDigit*Round(Power(2,x.Length-1));end; function func (x:integer):integer; beginvar s := ToBinary(x); loop 2 do s += s.AsEnumerable.Sum(c->c.ToDigit) mod 2; func:=FromBinary(s);end; begin Println('f(N):',func(ReadInteger('N:'))); Println('Количество:',(1..160).Count(x->func(x) in 90..160)); end.
Примечание:
Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).
ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).
Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).
import random
class Passanger:
def __init__(self, name_pass, bagadge_value, bagadge_quantity):
"""Constructor"""
self.name_pass = name_pass
self.bagadge_value = bagadge_value
self.bagadge_quantity = bagadge_quantity
if __name__ == "__main__":
list_name_pass = ["Иванов","Иванова","Калдыбег","Мухутдинов","Карелов","Анакондов"]
list_bagadge_value = [25,1,4,14,29,35,2,4,25,6,25,3]
list_bagadge_quantity = [1,4,5,1,1,1,1,1,1,4]
list_passangers = []
random.shuffle(list_name_pass)
random.shuffle(list_bagadge_value)
random.shuffle(list_bagadge_quantity)
for i in range(len(list_name_pass)):
list_passangers.append(Passanger(list_name_pass[i],list_bagadge_value[i], list_bagadge_quantity[i]))
print("Подходят под условие:")
for i in list_passangers:
if (i.bagadge_value < 25 and i.bagadge_quantity == 1):
print(i.name_pass, i.bagadge_value, i.bagadge_quantity)
print("")
print("Пассажиры:")
for i in list_passangers:
print(i.name_pass, i.bagadge_value, i.bagadge_quantity)
Объяснение:
https://pastebin.com/hNT2m49y
Примечание:
Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).
ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).
Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).
Пример работы: