А. Игнатюк) Исполнитель «Аппо» получает на вход четырехзначное число N и строит новое число R по следующим правилам:
1) Если первая цифра числа N делится на 4, то заменяем её на цифру 9.
2) Если первая цифра числа N делится на 2 и не делится на 4, то заменяем её на цифру 3.
Сколько существует чисел N, для которых соответствующее число R начинается с цифры 9, а восьмеричная запись числа R оканчивается цифрой 4?
k=0
for x in range (1000,10000):
a=str(x)
if int(a[1])%4==0:
a='9'+a[1:]
if int(a[1])%2==0 and int(a[1])%4!=0:
a='3'+a[1:]
if int(a[1])==9 and oct(int(a))[-1]==4:
k+=1
print(k)
Python
Строка не бывает равна числу.
Код в питоне выдаёт неверное значение: 0 Может не так oct использовал?
R начинается на 9, если N начинается на: 4, 8, 9 - три варианта.
8-ричная запись числа R оканчивается на 4, если остаток от деления на 8 равен 4. Или - что тоже самое - если число R + 4 делится на 8. В диапазоне 0..999 таких чисел:
(999 + 4) // 8 - (0 + 4 + 7) // 8 + 1
И вся программа:
P.P.S. Но если так хочешь циклом, то:
8-ричная запись числа R оканчивается на 4, если остаток от деления на 8 равен 4. Или - что тоже самое - если число R + 4 делится на 8. В диапазоне 0..999 таких чисел:
(999 + 4) // 8 - (0 + 4 + 7) // 8 + 1
И вся программа:
print(3 * ((999 + 4) // 8 - (0 + 4 + 7) // 8 + 1))
P.S. Зачем программисту математика?P.P.S. Но если так хочешь циклом, то:
k = 0
for i in range(1000, 10000):
if i // 1000 % 4 == 0: i = 9000 + i % 1000
elif i // 1000 % 2 == 0: i = 3000 + i % 1000
if i // 1000 == 9 and i % 8 == 4: k += 1
print(k)
У вас есть несколько ошибок в коде:
1) Индексация в строке `a` начинается с 0, поэтому первый символ будет `a[0]`, а не `a[1]`.
2) В строке проверки `if int(a[1])==9 and oct(int(a))[-1]==4:` вы сравниваете строку с числом, что вызывает ошибку. Вам следует сравнить две строки.
3) В проверке `if int(a[1])==9 and oct(int(a))[-1]==4:`, вы проверяете, является ли вторая цифра равной 9, а не первой.
4) В ваших условиях замены первой цифры вы просто переписываете строку `a`, вместо того, чтобы изменять её только в случае выполнения условия.
5) Также стоит отметить, что восьмеричное представление числа в Python будет начинаться с '0o', поэтому вам нужно будет учесть это при сравнении.
Попробуйте этот исправленный код:
1) Индексация в строке `a` начинается с 0, поэтому первый символ будет `a[0]`, а не `a[1]`.
2) В строке проверки `if int(a[1])==9 and oct(int(a))[-1]==4:` вы сравниваете строку с числом, что вызывает ошибку. Вам следует сравнить две строки.
3) В проверке `if int(a[1])==9 and oct(int(a))[-1]==4:`, вы проверяете, является ли вторая цифра равной 9, а не первой.
4) В ваших условиях замены первой цифры вы просто переписываете строку `a`, вместо того, чтобы изменять её только в случае выполнения условия.
5) Также стоит отметить, что восьмеричное представление числа в Python будет начинаться с '0o', поэтому вам нужно будет учесть это при сравнении.
Попробуйте этот исправленный код:
k = 0
for x in range(1000, 10000):
a = str(x)
if int(a[0]) % 4 == 0:
a = '9' + a[1:]
elif int(a[0]) % 2 == 0 and int(a[0]) % 4 != 0:
a = '3' + a[1:]
if a[0] == '9' and oct(int(a))[-1] == '4':
k += 1
print(k)
Этот код будет работать в соответствии с вашими требованиями.
Hasanali Guven Antalya
спасибо большое
oct(int(a))[-1]==4
Всегда ложное условие. Оно никаким образом не может выполниться.Строка не бывает равна числу.
Hasanali Guven Antalya
Да, исправил. С кавычками работает
Обращение к первому элементу массива происходит по индексу 0.
Hasanali Guven Antalya
бл забыл, спсибо
Hasanali Guven Antalya
не помогло кстати..
Похожие вопросы
- Что-то не получается дописать правильно код на Питоне
- Помогите написать код в питон
- Написание кода на питоне
- Помогите пожалуйста переделать код на Питоне
- Пожалуйста напишите код на питоне для новичка, чтобы разобраться
- Помогите исправить код на питоне я постоянно проигрываю в камень ножницы бумага и игра не идёт до трех побед
- Помогите написать код на питоне
- Напишите код в питоне
- Обьясните код на питоне пожалуйста
- Помогите с кодом на питон