Предмет: Информатика,
автор: Fintle
Вася написал код для решения некоторой задачи. Приводим его на трех языках программирования:
Python:
n = int(input())
ans = 0
i = 0
while n > 0:
if i % 2 == 1 and n % 10 % 2 == 0:
ans += 1
n //= 10
i += 1
print(ans)
Pascal:
var
n, i, ans: longint;
begin
readln(n);
ans := 0;
i := 0;
while n > 0 do begin
if (i mod 2 = 1) and (n mod 10 mod 2 = 0) then
ans := ans + 1;
n := n div 10;
i := i + 1;
end;
writeln(ans);
end.
C++:
#include
using namespace std;
int main()
{
int n, ans = 0, i = 0;
cin >> n;
while (n > 0){
if (i % 2 == 1 and n % 10 % 2 == 0)
ans++;
n /= 10;
i++;
}
cout << ans;
return 0;
}
А теперь ему стало интересно: при каком наименьшем n его программа выведет в качестве ответа число 3?
Ответы
Автор ответа:
2
200000, насколько я понял.Если вы дочитаете это - респект.%)
При первом запуске условие не выполниться, поэтому переменная ans останется прежней( в таком случае нам безразлично значение единиц числа n, и мы ставим наименьшее - 0), в этом же цикле от числа n убираются единицы и к переменная i увеличивается на 1.
Цикл начинается по новой, теперь условие выполняется( i делится на 2 с остатком 1), но также на два должны без остатка делится и десятки числа n(опять берем наименьшее число 0) переменная ans увеличивается на 1.
В следующем цикле условие опять не выполняется, i увеличивается на 1, от n убираются сотни(сотни числа n равны 0)
В четвертом цикле asn и i увеличиваются на 1, тысячи числа n опять же равны 0.
В 5-ом цикле условие не выполняется, i увеличивается на 1, десятки тысяч числа n равны 0.
И наконец в шестом цикле переменная asn увеличится на 1, но при том условии,что сотни тысяч числа n делятся на 2 без остатка - ноль здесь уже не подходит, поскольку число не может начинаться с нуля. Берем 2.
При первом запуске условие не выполниться, поэтому переменная ans останется прежней( в таком случае нам безразлично значение единиц числа n, и мы ставим наименьшее - 0), в этом же цикле от числа n убираются единицы и к переменная i увеличивается на 1.
Цикл начинается по новой, теперь условие выполняется( i делится на 2 с остатком 1), но также на два должны без остатка делится и десятки числа n(опять берем наименьшее число 0) переменная ans увеличивается на 1.
В следующем цикле условие опять не выполняется, i увеличивается на 1, от n убираются сотни(сотни числа n равны 0)
В четвертом цикле asn и i увеличиваются на 1, тысячи числа n опять же равны 0.
В 5-ом цикле условие не выполняется, i увеличивается на 1, десятки тысяч числа n равны 0.
И наконец в шестом цикле переменная asn увеличится на 1, но при том условии,что сотни тысяч числа n делятся на 2 без остатка - ноль здесь уже не подходит, поскольку число не может начинаться с нуля. Берем 2.
Fintle:
Спасибо! Вы мне очень помогли!)
Похожие вопросы
Предмет: Английский язык,
автор: udhsisjd
Предмет: Русский язык,
автор: kuvaldinamargarita5
Предмет: Алгебра,
автор: Nastyasans
Предмет: Математика,
автор: 290808
Предмет: Геометрия,
автор: ЯНЕПТИЧКААЦТАНЬ