Вася написал код для решения некоторой задачи. Приводим его на 3-х
Вася написал код для решения некоторой задачи. Приводим его на 3-х языках программирования:
Python:
n = int(input())
ans = 0
i = 0
while n gt; 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 gt; 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 gt;gt; n;
while (n gt; 0)
if (i % 2 == 1 and n % 10 % 2 == 0)
ans++;
n /= 10;
i++;
cout lt;lt; ans;
return 0;
А сейчас ему стало занимательно: при каком наименьшем n его программа выведет в качестве ответа число 3?
При первом запуске условие не выполниться, потому переменная ans останется прежней( в таком случае нам безразлично значение единиц числа n, и мы ставим наименьшее - 0), в этом же цикле от числа n убираются единицы и к переменная i возрастает на 1.
Цикл начинается по новейшей, теперь условие выполняется( i делится на 2 с остатком 1), но также на два обязаны без остатка делится и 10-ки числа n(вновь берем наименьшее число 0) переменная ans возрастает на 1.
В последующем цикле условие вновь не производится, i возрастает на 1, от n убираются сотни(сотки числа n равны 0)
В четвертом цикле asn и i увеличиваются на 1, тыщи числа n опять же равны 0.
В 5-ом цикле условие не выполняется, i увеличивается на 1, 10-ки тыщ числа n одинаковы 0.
И в конце концов в шестом цикле переменная asn увеличится на 1, но при том условии,что сотки тыщ числа n делятся на 2 без остатка - ноль тут теснее не подходит, так как число не может начинаться с нуля. Берем 2.
-
Вопросы ответы
Статьи
Информатика
Статьи
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.