Задача 10. Васин код Вася написал код для решения некоторой задачи. Приводим его на трех языках программирования: Python: n = int(input()) ans = 0 i = 1 while n > 0: if i % 2 == 1 and n % 10 % 2 == 1: ans += 1 n //= 10 i += 1 print(ans) Pascal: var n, i, ans: longint; begin readln(n); ans := 0; i := 1; while n > 0 do begin if (i mod 2 = 1) and (n mod 10 mod 2 = 1) 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 = 1; cin >> n; while (n > 0){ if (i % 2 == 1 and n % 10 % 2 == 1) ans++; n /= 10; i++; } cout << ans; return 0; } А теперь ему стало интересно: при каком наименьшем n его программа выведет в качестве ответа число 3?
Для того чтобы программа вывела в качестве ответа число 3, необходимо, чтобы в числе n было ровно 3 нечетных цифры на нечетных позициях.
Давайте пройдемся по алгоритму:
Переменная i отвечает за позицию текущей цифры.Переменная ans отвечает за количество найденных нечетных цифр на нечетных позициях.Нам нужно, чтобы ans было равно 3. Значит, нам нужно найти 3 нечетные цифры на нечетных позициях.Пройдемся по разрядам числа n с конца (с младших разрядов) и будем считать количество найденных нечетных цифр на нечетных позициях.Когда ans станет равно 3, мы найдем число n, при котором программа выведет 3 в качестве ответа.
Давайте протестируем алгоритм с помощью кода на Python:
n = 1 while True: ans = 0 i = 1 temp = n while temp > 0: if i % 2 == 1 and temp % 10 % 2 == 1: ans += 1 temp //= 10 i += 1 if ans == 3: print(n) break n += 1
Мы запустим этот код и найдем наименьшее число n, при котором программа выведет 3 в качестве ответа.
Для того чтобы программа вывела в качестве ответа число 3, необходимо, чтобы в числе n было ровно 3 нечетных цифры на нечетных позициях.
Давайте пройдемся по алгоритму:
Переменная i отвечает за позицию текущей цифры.Переменная ans отвечает за количество найденных нечетных цифр на нечетных позициях.Нам нужно, чтобы ans было равно 3. Значит, нам нужно найти 3 нечетные цифры на нечетных позициях.Пройдемся по разрядам числа n с конца (с младших разрядов) и будем считать количество найденных нечетных цифр на нечетных позициях.Когда ans станет равно 3, мы найдем число n, при котором программа выведет 3 в качестве ответа.Давайте протестируем алгоритм с помощью кода на Python:
n = 1while True:
ans = 0
i = 1
temp = n
while temp > 0:
if i % 2 == 1 and temp % 10 % 2 == 1:
ans += 1
temp //= 10
i += 1
if ans == 3:
print(n)
break
n += 1
Мы запустим этот код и найдем наименьшее число n, при котором программа выведет 3 в качестве ответа.