148625
01.06.2023 15:01

Даны две рациональные дроби: a/b и c/d. Сложите их и результат представьте в виде несократимой дроби m/n. Мой код: (согласна, длиноватенько)
a, b, c, d = map(int,input().split())
if a == 0 and c == 0:
print(0)
elif a == 0:
s1 = c
w1 = d
s, w = s1, w1
if s c:
k, h, n1, m1 = a, b, c, d
y, u, i, o = a, b, c, d
r, g = h, m1
if h != m1:
if h r, g = g, r
while r%g != 0:
r = r%g
r, g = g, r
u = int(h/g*m1)
o = u
y = int(u/b)
i = int(o/d)
m2 = y-i
n2 = u
m3, n3 = m2, n2
if m3 m3, n3 = n3, m3
while m3%n3 != 0:
m3 = m3%n3
m3, n3 = n3, m3
m = int(m2/n3)
n = int(n2/n3)
print(-m, n)
else:
p1 = a-c
f1 = d
p, f = p1, f1
if p p, f = f, p
while p%f != 0:
p = p%f
p, f = f, p
m = int(p1/f)
n = int(f1/f)
print(-m, n)
if a k, h, n1, m1 = a, b, c, d
y, u, i, o = a, b, c, d
r, g = h, m1
if h != m1:
if h r, g = g, r
while r%g != 0:
r = r%g
r, g = g, r
u = int(h/g*m1)
o = u
y = int(u/b)
i = int(o/d)
m2 = i-y
n2 = u
m3, n3 = m2, n2
if m3 m3, n3 = n3, m3
while m3%n3 != 0:
m3 = m3%n3
m3, n3 = n3, m3
m = int(m2/n3)
n = int(n2/n3)
print(m, n)
else:
p1 = c-a
f1 = d
p, f = p1, f1
if p p, f = f, p
while p%f != 0:
p = p%f
p, f = f, p
m = int(p1/f)
n = int(f1/f)
print(m, n)
else:
k, h, n1, m1 = a, b, c, d
y, u, i, o = a, b, c, d
r, g = h, m1
if h != m1:
if h r, g = g, r
while r%g != 0:
r = r%g
r, g = g, r
u = int(h/g*m1)
o = u
y = int(u/b)
i = int(o/d)
m2 = y+i
n2 = u
m3, n3 = m2, n2
if m3 m3, n3 = n3, m3
while m3%n3 != 0:
m3 = m3%n3
m3, n3 = n3, m3
m = int(m2/n3)
n = int(n2/n3)
print(m, n)
else:
p1 = a+c
f1 = d
p, f = p1, f1
if p p, f = f, p
while p%f != 0:
p = p%f
p, f = f, p
m = int(p1/f)
n = int(f1/f)
print(m, n)
Я проверяла, все работает, но мне выдают "Частичное решение". Почему? (по времени все заходит)

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
RomqaShut
02.11.2021 13:03

Закраски клеток (команда 5) здесь нет, значит надо просто обеспечить более короткое перемещение в ту же конечную точку.

Для этого посмотрим, что за движения там записаны.

Если во всём алгоритме три раза вверх и три раза вниз- то робот вернётся в ту же точку (по вертикали), и значит все эти команды можно просто удалить.

То же самое- для движений влево и вправо. Они тоже взаимно противоположные.

Другими словами- надо просто сократить все пары движений влево-вправо и вверх-вниз. Всё что останется- это и есть короткий вариант алгоритма, который даст перемещение ту же самую конечную точку.

Запишу подробнее, как сократить алгоритм движения (только для случая без закраски):

а) берём наш алгоритм: 131413324223

б) во всём алгоритме считаем количество команд перемещения для каждого из направлений движения:

1 (вверх)-    3 штуки

2 (вниз)-     3 штуки

3 (влево)-   4 штуки

4 (вправо)- 2 штуки

в) считаем разность количества команд влево и вправо (из большего числа вычитаем меньшее):  4 - 2 = 2

Осталось две команды - влево (т.к. их было больше). Остальные команды влево-вправо сократились (мы их удалили из алгоритма).

г) считаем разность количества команд вверх и вниз (из большего числа вычитаем меньшее, но тут числа равны):  3 - 3 = 0

Не осталось ни одной команды вверх или вниз. Все эти команды сократились (мы их удалили из алгоритма).

д) получаем, что в коротком варианте алгоритма останутся только две команды влево (3).

Запишем весь алгоритм:   33

0,0(0 оценок)
Ответ:
христяч
13.01.2021 08:56

using System;

namespace ConsoleApp6

{

   class Program

   {

       static void Main(string[] args)

       {

           int x, y, z, k=0;

           x = int.Parse(Console.ReadLine());

           y = int.Parse(Console.ReadLine());

           z = int.Parse(Console.ReadLine());

           if (x == 0)

               k++;

           if (y == 0)

               k++;

           if (z == 0)

               k++;

           if (k==0)

               Console.WriteLine("среди чисел нулей нет");

           else

               Console.WriteLine("кол-во чисел равных 0: " + k.ToString());

           Console.ReadKey();

       }

   }

}

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота