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

Фишка

15.01.2024, 20:14. Показов 1669. Ответов 14

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста

Фишку можно перемещать по полю,состоящему из n строк и m столбцов.В каждой клетке записано число a(i,j).За ход можно переместить фишку в поле(i2,j2) если НОД(a(i,j),a(i2,j2))>1
вывести минимальное колво ходов
1<=n,m<=10**5
1<=a<=10**6
TL-2 с

Тест 1:
1 1
1
Ответ:0

Тест 2:
3 1
1
2
4
Ответ:-1

Тест 3:
3 3
6 9 5
8 6 21
77 14 11
Ответ:3
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.01.2024, 20:14
Ответы с готовыми решениями:

Козук Ус и фишка
Недавно Козак Ус нашел фишку и n точек, которые находятся на одной прямой. Фишка изначально имеет координату x, а i-и точка имеет...

Выведите наименьшее число ходов которое, необходимо сделать чтобы фишка оказалась в клетке, содержащей число k
Вам дано поле, являющееся бесконечной таблицей умножения. В клетке с координатами (i,j) стоит целое число, равное i×j . Фишка стоит на...

Фишка с триггерами?
&lt;Style x:Key=&quot;MyButtonStyle-1&quot; TargetType=&quot;{x:Type Button}&quot;&gt; &lt;Setter Property=&quot;FocusVisualStyle&quot;...

14
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
16.01.2024, 14:16
Решите пожалуйста олимпиадную задачу
0
0 / 0 / 0
Регистрация: 15.01.2024
Сообщений: 6
16.01.2024, 19:39  [ТС]
Эта старая олимпиада,она сейчас не идет,
я сейчас пытаюсь разобраться,вот смысл помогать мне

Добавлено через 2 минуты
Red white socks, поможешь пожалуйста?
0
Заблокирован
16.01.2024, 23:45
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from math import gcd
from collections import deque
 
def min_moves(n, m, grid):
    dx = [-1, 0, 1, 0]
    dy = [0, 1, 0, -1]
    visited = [[False]*m for _ in range(n)]
    queue = deque([(0, 0, 0)])
 
    while queue:
        x, y, d = queue.popleft()
        if (x, y) == (n-1, m-1):
            return d
        for i in range(4):
            nx, ny = x + dx[i], y + dy[i]
            if 0 <= nx < n and 0 <= ny < m and not visited[nx][ny] and gcd(grid[x][y], grid[nx][ny]) > 1:
                visited[nx][ny] = True
                queue.append((nx, ny, d+1))
    return -1
 
print(min_moves(1, 1, [[1]]))
print(min_moves(3, 1, [[1], [2], [4]]))
print(min_moves(3, 3, [[6, 9, 5], [8, 6, 21], [77, 14, 11]]))
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
17.01.2024, 10:42
nikulin_artyom1, фишка может за ход переместиться не только в соседнюю по стороне, а в любую клетку, лишь бы НОД был больше 1.

Добавлено через 1 минуту
gromik2222, вы понимаете как BFS организовать?
1
Заблокирован
17.01.2024, 12:00
Red white socks, исправил.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from math import gcd
from heapq import heappush, heappop
 
def min_moves(n, m, grid):
    visited = [[False]*m for _ in range(n)]
    heap = [(0, (0, 0))]
 
    while heap:
        d, (x, y) = heappop(heap)
        if (x, y) == (n-1, m-1):
            return d
        if visited[x][y]:
            continue
        visited[x][y] = True
        for i in range(n):
            for j in range(m):
                if not visited[i][j] and gcd(grid[x][y], grid[i][j]) > 1:
                    heappush(heap, (d+1, (i, j)))
    return -1
 
print(min_moves(1, 1, [[1]]))
print(min_moves(3, 1, [[1], [2], [4]]))
print(min_moves(3, 3, [[6, 9, 5], [8, 6, 21], [77, 14, 11]]))
0
0 / 0 / 0
Регистрация: 15.01.2024
Сообщений: 6
17.01.2024, 14:29  [ТС]
Не работает ваш код

Добавлено через 1 минуту
Red white socks это с графами связано?С математикой у меня неплохо

Добавлено через 49 секунд
А вы проверяли код на других тестах?
0
Заблокирован
17.01.2024, 14:51
Цитата Сообщение от gromik2222 Посмотреть сообщение
Не работает ваш код
в google colab работает. если делаешь в другой среде - установи библиотеки
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
17.01.2024, 18:38
Цитата Сообщение от gromik2222 Посмотреть сообщение
Red white socks это с графами связано?
Математика это одно, а графовые алгоритмы это другое.
Задачу можно поделить на 2 части:
базовая - BFS по графу, что было сделано nikulin_artyom1 (с оговорками). Но важно понимать, что здесь делается;
и вторая часть - быстрый поиск соседей, т.е. как не увеличивая асимптотику найти клетки не взаимно простые с данной.

Соль задачи именно во второй части, но и без знания базы (первой части) сюда лучше не соваться.
0
0 / 0 / 0
Регистрация: 15.01.2024
Сообщений: 6
17.01.2024, 21:31  [ТС]
from math import *
from heapq import *


def f(b, a, m):
c = [[False]*a for i in range(b)]
q = [(0, (0, 0))]
while(len(q)):
z,(x, y) = heappop(q)
if (x, y) == (b-1, a-1):
return z
if c[x][y]:
continue
c[x][y] = True
for i in range(b):
for j in range(a):
if not c[i][j] and gcd(m[x][y], m[i][j]) > 1:
heappush(q, (z+1, (i, j)))
return -1


b,a = map(int,input().split())
if(a==1 or a==2):
m = [[0]*b for i in range(b)]
else:
m = [[0]*b for i in range(a)]
for i in range(b):
m[i] = [int(j) for j in input().strip().split(" ")]

print(f(b,a,m))


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

Добавлено через 52 секунды
nikulin_artyom1, сделайте пожалуйста ввод с клавы пожалуйста,я не понимаю как это делать
0
Заблокирован
17.01.2024, 21:39
gromik2222, что за тест?
0
0 / 0 / 0
Регистрация: 15.01.2024
Сообщений: 6
17.01.2024, 21:43  [ТС]
например без того if если a=1 ,то прога ломается выходом за пределы массива
Другие частные случаи пока не нашел,но они по-любому есть,ввод кривой наверно
0
Вирусоборец
 Аватар для thyrex
14449 / 7488 / 1582
Регистрация: 06.09.2009
Сообщений: 27,132
17.01.2024, 21:45
Ввод
Python
1
2
3
4
b, a = map(int,input().split())
m = []
for _ in range(b):
    m.append([int(j) for j in input().split()])
0
0 / 0 / 0
Регистрация: 15.01.2024
Сообщений: 6
17.01.2024, 21:56  [ТС]
thyrex, nikulin_artyom1,Red white socks, Спасибо большое,но теперь не проходит по времени,т.к. длина массива может быть [10**5][10**5]
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
17.01.2024, 23:17
Цитата Сообщение от gromik2222 Посмотреть сообщение
сделайте пожалуйста ввод с клавы пожалуйста,я не понимаю как это делать

Не по теме:

Графовые алгоритмы, олимпиадные задачи, ага...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2024, 23:17
Помогаю со студенческими работами здесь

фишка Яндекса
Яндекс замечен в новой выдаче , впринципе тоже самое было уже у Гугл , в частности интересует момент , как реализовать что бы у сайта...

Новая фишка
Новая фишка + после поиска заботливая ссылка на маркет -) http://yandex.ru/yandsearch?text=отключение+воды

фишка и числа
Всем привет! У меня проблема нужно помочь другу здать 2 задачи,а времени у меня почти нет(нужно до понедельника здать). Накиньте хоть...

Фишка от Яндекса
Забавную штуку придумали - на первой странице в выдаче выводить иконки с сайтов (если они есть). ИМХО, очень удобно для тех, кто...

В чем фишка?
Утро доброе всем. Из начинающих я. #-o Прогоняю сегодня страничку http://renta-vrn.ru/1/pages.html через промолаб и тот мне вдруг...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru