помогите решить задачу, пожалуйста. Задачу закрепил. Желательно решение на Python, но подойдет и решение на C++ или Pascal

Приложения:

Ответы

Ответ дал: boda46537
0

Язык Python 3.x

Ответ:

Код:

while 1:

   n=int(input(''))

   if n%3==0:

           print(0)

   else:

       for i in range(n, -1, -1):

           if i%3==0:

               print(n-i)

               break

           else:

               pass

Объяснение (в хештегах):

Код:

while 1: #создаем бессконечный цикл, чтобы проверять числа несколько раз без перезагрузки проекта (число 1 это тоже что и True)

   n=int(input(''))#ввод

   if n%3==0:#проверка если число сразу делитися на 3

           print(0) #если число сразу делится на 3, выведится "0"

   else:#в иных случаях

       for i in range(n, -1, -1):#создаем цикл для проверки. с каждым кругом переменная i уменьшается на 1

           if i%3==0:#проверка если число делитися на 3

               print(n-i) #вывод ответа (от числа отнимаем кол-во кругом и получаем ответ) (например: n=148, i=147, 148-147=1, то что нам и надо)

               break #выходим из цикла

           else:#в иных случаях

               pass#продолжаем цикл

#надеюсь помог XD

P.S. код выполнятся с корректно с хештегами будет, поскольку # для этого и созданы.

P.S. файл .txt можешь переиминовать в .py и будет тебе файл .py. Я прикрепил чтобы был отспут корректный, это так на всякий, зависит от того какой у тебя монитор. Но я думаю ты с отступами справишься )

Приложения:

tgh25: Признак делимости на 3 звучит следующим образом, число делится на 3, когда сумма его цифр делится на 3. По идеи нам нужно еще условие для того что если цифры будет 2
boda46537: емае. извиняюсь, видимо я слепой что вместо "вычеркнуть", прочитал "отнять"... в ближайшее время посторяюсь сделать
boda46537: while 1:
num = f'{input()}'
k=len(num)
n=1<
if n%3==0:
print(0)
else:
for elem in range(1, n):
count=''.join(map(lambda x,y: x*y, num , map(int, f'{elem%(n):0{k}b}')))
if int(count)%3==0:
print(len(num)-len(count))
break
elif elem==n-1:
print('Решений нету')
break
else:
pass
boda46537: блин, отступы пропали
tgh25: Я питон не особо знаю, но не проще было просто добавить условие, если число меньше 100 то увеличивать i в цикле, иначе уменьшать i в цикле, и еще если число меньше 10 тогда выводить что цифра всегда одна, что-то в таком роде?
tgh25: n=1< после сравнения не стоит аргумента, с чем оно сравнивается? Ну а тут вообще count=''.join(map(lambda x,y: x*y, num , map(int, f'{elem%(n):0{k}b}'))) ничего не понятно
boda46537: хз чтото не скопировалось
boda46537: while 1:
num=f'{input()}'
k=len(num)
n=1< if int(num)%3==0:
print(0)
else:
for elem in range(1, n):
count=''.join(map(lambda x,y: x*y, num , map(int, f'{elem%(n):0{k}b}')))
if int(count)%3==0:
print(len(num)-len(count))
break
elif int(n)==int(elem)+1:
print('Решений нету')
break
else:
pass
boda46537: та емае, ну ладно и так пойдет
boda46537: .join(map(lambda x,y: x*y, num , map(int, f'{elem%(n):0{k}b}'))) это расчет
Вас заинтересует