İNfo 9 Rus Dersli̇k Opt
УЧЕБНИК по предмету “Информатика” для 9-го класса общеобразовательных школ. Утвержден Министерством образования Азербайджанской Республики (приказ № 369 от 03.06.2016) © Министерство образования Азербайджанской Республики – 2016. Авторские права защищены. Показать больше
УЧЕБНИК по предмету “Информатика” для 9-го класса общеобразовательных школ. Утвержден Министерством образования Азербайджанской Республики (приказ № 369 от 03.06.2016) © Министерство образования Азербайджанской Республики – 2016. Авторские права защищены. Перепечатывать это издание или какую-либо его часть, копировать и распространять в электронных средствах информации без специального разрешения противозаконно. Издательство “Yaz” Отзывы, замечания и предложения, связанные с учебником, просим отправлять на электронные адреса: yazneshr@mail.ru и derslik@edu.gov.az. Заранее благодарим за сотрудничество! РАМИН МАХМУДЗАДЕ, ИСМАИЛ САДЫГОВ, НАИДА ИСАЕВА ИНФОРМАТИКА 9 Спрятать
- Похожие публикации
- Поделиться
- Код вставки
- Добавить в избранное
- Комментарии
Как правильно сократить дробь n/m, используя алгоритм Евклида?
Задача: Сокращение дроби Сократите дробь n/m. Используйте алгоритм Евклида. Мой код:
a, b = map(int, input(). split()) if a == 0 or b == 0: c = a + b if a % 2 != 0 or a % 3 != 0 or a % 5 != 0 or a % 7 != 0: с = 1 elif b % 2 != 0 or b % 3 != 0 or b % 5 != 0 or b % 7 != 0: с = 1 print(a, b) elif a >= b: c = a % b elif a < b: c = b % a x = a // c y = b // c print(x, y)
Что делать, что мой код упрощает дроби не совсем так? То есть при вводе 16 6 он упрощает до 4 1. А надо до 8 3?
Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
Сократите дробь (функция)
Сократите дробь (n / m), то есть выведите два других числа p и q таких, что (n / m) = (p / q) и дробь (p / q) — несократимая.
Решение оформите в виде функции ReduceFraction(n, m), получающая значения n и m и возвращающей кортеж из двух чисел (return p, q)."
Задачу решила, код вроде работает, но проверку не проходит - требуется такой вывод:
Тест 1
Входные данные:
12
16
Вывод программы:
3 4
Но ведь при возврате двух значений автоматом создается кортеж, а я в силу недостатка знаний не понимаю, как сделать так, чтобы выводилось именно как в примере. Пробовала присваивать значения переменным, распаковывать кортеж - без толку. Помогите, пожалуйста, уже нет никаких идей, а задачу надо сдать, иначе курс не будет считаться пройденным.
Собственно мой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
def ReduceFraction(n, m): if n > m: k = n else: k = m while k != 1: if n % k == 0 and m % k == 0: return n // k, m // k else: k -= 1 return n, m n, m = int(input()), int(input()) print(ReduceFraction(n, m))
Помогите, пожалуйста, разобраться с задачей "Сократите дробь" в Питоне!
Код написала, все мои тесты проходит, но при сдаче задачи выходит ошибка - Time Limit Exceeded((( На сайте есть уже такой вопрос, но решение, которое предложили в ответе тоже не принимается!
Выручайте, пожалуйста. Голову сломала!
Даны два натуральных числа n и m.
Сократите дробь (n / m), то есть выведите два других числа p и q таких, что (n / m) = (p / q) и дробь (p / q) — несократимая.
Решение оформите в виде функции ReduceFraction(n, m), получающая значения n и m и возвращающей кортеж из двух чисел (return p, q).
a = int(input())
b = int(input())
def ReduceFraction(a, b):
while a != b:
if a > b:
a = a - b
else:
b = b - a
return (a)
p = a // ReduceFraction(a, b)
q = b // ReduceFraction(a, b)
print(p, q)
Лучший ответ
вроде дробь надо сокращать на НОД
def ReduceFraction(n, m):
def gdc (a, b) :
while a%b: a, b = b, a%b
return b
g = gdc(n, m)
return n / g, m / g
Алена ХаликоваУченик (107) 5 лет назад
Если честно, не поняла, что вы написали. ((
"while a%b: a, b = b, a%b"
Аглая Шниц Искусственный Интеллект (126802) алгоритм Евклида. если а не делится на b нацело, то НОД (a, b) = НОД (b, остаток от деления a на b)
Алена ХаликоваУченик (107) 5 лет назад
благодарю всех участвующих, оформила всё в такое решение:
from fractions import gcd
a = int(input())
b = int(input())
def ReduceFraction(a, b):
def gdc(a, b):
while a % b != 0:
a, b = b, a % b
return b
g = gdc(a, b)
return int(a / g), int(b / g)
Ответ выходит правильный, но в скобках и проваливает первый же тест.
Test 1
input:
12
16
Wrong answer.
correct output:
3 4
Можно ли как-то вывести без скобок?
Аглая Шниц Искусственный Интеллект (126802) питон 3 ? вот так вроде без скобок: print(*ReduceFraction(a, b))
Остальные ответы
предлагаю уменьшить время работы в два раза, используя
c = ReduceFraction(a, b)
print(a // c, b // c)
Алена ХаликоваУченик (107) 5 лет назад
не помогло, к сожалению. та же ошибка
李西青 Просветленный (42576) значит алгоритм нужно править
Программка может быть тупая, но тем не менее: (можно написать: for i in range(min(a,b),1,-1): . а 2 строки выше удалить)
Алена ХаликоваУченик (107) 5 лет назад
конструкцию с for мы ещё не проходили ((
Алена ХаликоваУченик (107) 5 лет назад
У вас ответ в скобках выходит. Попробовала отправить, не проходит первый же тест. Может дело как раз в скобках. Можно как-то без них ответ вывести?
Юрий Моисеев Оракул (83868) Я в Питоне новичок, повозился и получилось вот так:
К чему тут циклы, используйте алгоритм Евклида по нахождению НОД для двух чисел (ведь именно так вы на математике сокращали дробь?) И отсюда пляшите.
