Такие задания со сложными условиями легче всего решать программой на питоне:
for n in range(1, 10000000): # Грубый перебор
n -= n % 4 # 1. Из числа N вычитается остаток от деления N на 4.
n = bin(n)[2:] # 2. Строится двоичная запись полученного результата. + срез "0b"
n = n + str(n.count('1') % 2) # 3. a)
n = n + str(n.count('1') % 2) # 3. б)
r = int(n, 2) # Перевод в 10 с.с.
if r > 56:
print(r)
break
ответ: 66
Если всё же рассуждать, то опять перебором:
Возьмём, например, число 5 и выполним алгоритм:
1. 5 - 5 % 4 = 4
2. 4 -> 100
3. a) 1001
б) 10010
R = 18, очень мало
Возьмём, например, 14:
1. 12
2. 1100
3. a) 11000
б) 110000
R = 48, маловато, но близко
Возьмём, например, 15:
Видим, будет тоже, что и 14
Возьмём, например, 16:
1. 16
2. 10000
3. a) 100001
б) 1000010
R = 66, то, что нам нужно.
program five;
var
number, quantity: integer;
begin
quantity := 0;
read(number);
while number > 0 do
if (number mod 10 mod 5 = 0) then
inc(quantity);
number := number div 10;
end;
write(quantity);
end.
Объяснение:
program five; // Название программы
number, quantity: integer; // Целочисленные переменные:
begin // Начало программы
quantity := 0; // Количество цифр = 0
read(number); // Ввод числа с клавиатуры
while number > 0 do // Пока значение переменной number > 0
begin // Начало цикла
if (number mod 10 mod 5 = 0) then // Если последняя цифра переменной number (number mod 10) при делении на 5 дает остаток 0, тогда
inc(quantity); // Прибавляем к переменной quantity единицу
number := number div 10; // Удаляем последнюю цифру числа
end; // Конец цикла
write(quantity); // Вывод ответа
end. // Конец программы
Такие задания со сложными условиями легче всего решать программой на питоне:
for n in range(1, 10000000): # Грубый перебор
n -= n % 4 # 1. Из числа N вычитается остаток от деления N на 4.
n = bin(n)[2:] # 2. Строится двоичная запись полученного результата. + срез "0b"
n = n + str(n.count('1') % 2) # 3. a)
n = n + str(n.count('1') % 2) # 3. б)
r = int(n, 2) # Перевод в 10 с.с.
if r > 56:
print(r)
break
ответ: 66
Если всё же рассуждать, то опять перебором:
Возьмём, например, число 5 и выполним алгоритм:
1. 5 - 5 % 4 = 4
2. 4 -> 100
3. a) 1001
б) 10010
R = 18, очень мало
Возьмём, например, 14:
1. 12
2. 1100
3. a) 11000
б) 110000
R = 48, маловато, но близко
Возьмём, например, 15:
1. 12
Видим, будет тоже, что и 14
Возьмём, например, 16:
1. 16
2. 10000
3. a) 100001
б) 1000010
R = 66, то, что нам нужно.
ответ: 66
program five;
var
number, quantity: integer;
begin
quantity := 0;
read(number);
while number > 0 do
begin
if (number mod 10 mod 5 = 0) then
inc(quantity);
number := number div 10;
end;
write(quantity);
end.
Объяснение:
program five; // Название программы
var
number, quantity: integer; // Целочисленные переменные:
number - вводимое с клавиатуры число;quantity - количество цифр кратных 5.begin // Начало программы
quantity := 0; // Количество цифр = 0
read(number); // Ввод числа с клавиатуры
while number > 0 do // Пока значение переменной number > 0
begin // Начало цикла
if (number mod 10 mod 5 = 0) then // Если последняя цифра переменной number (number mod 10) при делении на 5 дает остаток 0, тогда
inc(quantity); // Прибавляем к переменной quantity единицу
number := number div 10; // Удаляем последнюю цифру числа
end; // Конец цикла
write(quantity); // Вывод ответа
end. // Конец программы