Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.10.2022
Сообщений: 19

Задача на сближение

21.12.2023, 22:08. Показов 667. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста,
Заяц и Медведь стоят на концах тропинки длиной S. Заяц умеет совершать в секунду 1 прыжок по тропинке на расстояние Z, Медведь – на расстояние M. И Заяц , и Медведь могут и не прыгать никуда в очередную секунду. Разработайте программу, которая определяет, за какое минимальное количество секунд они могут встретиться и заключить друг друга в объятия.
Ввод: три числа S, Z, M на трёх разных строках
Вывод: одно число – минимальное количество секунд, если встреча невозможна, то вывести -1
мой код на нек тестах выдает timelimit, -1 я пропустил
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def min_meeting_time(S, Z, M):
 
 
    min_time = float('inf')
 
    for z_jumps in range(S // Z + 1):
        remaining_distance = S - z_jumps * Z
        if remaining_distance % M == 0:
            m_jumps = remaining_distance // M
            total_time = max(z_jumps, m_jumps)
            min_time = min(min_time, total_time)
 
    return min_time if min_time != float('inf') else -1
 
 
S = int(input())
Z = int(input())
M = int(input())
 
result = min_meeting_time(S, Z, M)
print(result)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2023, 22:08
Ответы с готовыми решениями:

Задача на минимальное сближение двух тех, движущихся прямолинейно
Приветствую. Никак не могу решить задачу по физике. Вот текст задачи: Две прямые дороги пересекаются под углом α. По ним к...

Сближение и уменьшение в OpenGL
#include <GL\freeglut.h> double win1 = 1680, win2 = 1050; double vet1 = win1 / 2, vet2 = win2 / 2; void Mushka() { ...

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько приложений. Каждое из приложений работает в...

7
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
21.12.2023, 22:53
Python
1
2
3
4
5
6
7
8
9
10
11
12
k=10000000000
s=int(input())
z=int(input())
m=int(input())
for i in range(0,s+1):
    for j in range(0,s+1):
        if s==z*i+m*j:
            k=min(i+j,k)                  
if k==10000000000:
    print(-1)
else:
    print(k)
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
21.12.2023, 22:56
6k1ttles, задача скорее всего на расширенный алгоритм Евклида
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
21.12.2023, 23:13
Надо уточнить, что значит встретятся: встанут рядом или пересекутся в одной и той же точке. Программа сделана для соседних точек. Если они должны столкнуться, то уменьшаем S на 1
if s-1==z*i+m*j:

точнее так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
k=10000000000
s=int(input())
z=int(input())
m=int(input())
for i in range(0,s+1):
    for j in range(0,s+1):
        if s==z*i+m*j:
            k=min(max(i,j),k)                  
if k==10000000000:
    print(-1)
else:
    print(k)
0
 Аватар для igorrr37
2889 / 2036 / 992
Регистрация: 21.12.2010
Сообщений: 3,788
Записей в блоге: 9
22.12.2023, 07:03
Это же кузнечик. За O(S)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
s = 7
m = 2
z = 3
vJumps = [m, z, m + z]
dp = [float('inf')] * (s + 1)
dp[0] = 0
 
for i in range(len(dp)):
    if dp[i] != float('inf'):
        for jLen in vJumps:
            if i + jLen < len(dp):
                dp[i + jLen] = min(dp[i + jLen], dp[i] + 1)
 
print(-1 if dp[-1] == float('inf') else dp[-1])
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
22.12.2023, 11:19
igorrr37, с помощью диофантова уравнения (через расширенный алгоритм Евклида) - O(log(max(Z,M)))
1
0 / 0 / 0
Регистрация: 14.10.2022
Сообщений: 19
22.12.2023, 11:35  [ТС]
Спасибо, но в одном из тестов расстояние больше 10 миллионов, тоже падает
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
22.12.2023, 14:07
Лучший ответ Сообщение было отмечено 6k1ttles как решение

Решение

6k1ttles, http://e-maxx.ru/algo/export_diofant_2_equation
Здесь уравнение вида Z*x + M*y = S, где x и y - требуемое число прыжков соответственно зайца и медведя
Попробуй (при условии, что вводимые числа - натуральные)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def gcd_ext(a, b):
    if b == 0:
        return a, 1, 0
    d, x, y = gcd_ext(b, a % b)
    x, y = y, x - (a//b) * y
    return d, x, y
 
 
z = 2
m = 17
s = 10**10 
d, x, y = gcd_ext(m, z)
res = -1
if s % d == 0:
    k = s // d
    t = k*x // (z//d)
    x = k*x - (z//d) * t
    y = (s - m*x) // z
    
    step = abs(x - y) // (m + z)
    if x > y:
        x, y = y, x 
        m, z = z, m 
    x += z * step
    y -= m * step
    res = -1 if x < 0 else max(x, y)
    res = min(res, max(x + z, y - m))
    
print(res)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.12.2023, 14:07
Помогаю со студенческими работами здесь

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный целочисленный массив. У класса есть...

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому полю присваивается при создании объекта...

Задача со строками. Задача находится на фотке, которая прикреплена к сообщению
Фотку прикрепил к сообщению. П.5.4. Правил Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;,...

Задача при создание нового лида выводится задача от несущ.пользователя Б24
При создание нового Лида Выходит уведомление от пользователя которого нету в компаний. Как поменять пользователя???

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru