![]() |
|
Модераторы: Alx, Fixin |
![]()
|
|
| Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: нет Всего: 7 |
Английский текст приводить не буду, а сразу переведу на русский.
Отрезок начинается и заканчивается в точках с целыми координатами ("целые" точки). Посчитать через сколько целых точек он проходит (начало и конец не считаем). Method signature: int carrotsBetweenCarrots(int x1, int y1, int x2, int y2)
Вот это не работает. Не хватает видимо точности. Правильное решение: НОД катетов минус 1. Почему это так?? я не понимаю!! -------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
тут можно решать в два этапа:
1. найти НОД-1 точек 2. доказать, что больше нету A, B - концы отрезка dx=Bx-Ax dy=By-Ay первый этап очень простой: dx (горизонтальный катет) = N*НОД dy (вертикальный катет) = M*НОД тогда мы можем просто выписать НОД-1 точку (учитывая, что концы нас не интересуют): (1*N,1*M),(2*N,2*M),...,((НОД-1)*N,(НОД-1)*M) теперь второй этап: просто докажем, что если взять любую точку с целыми координатами на отрезке, она будет одной из вышеупомянутой последовательности взяли точку C тогда (Cx-Ax)/dx=(Cy-Ay)/dy dy*(Cx-Ax)=dx*(Cy-Ay) M*(Cx-Ax)=N*(Cy-Ay) т.к. Cy-Ay - целое, то M*(Cx-Ax) кратно N а т.к. M и N взаимно простые, то Cx-Ax кратно N аналогично Cy-Ay кратно M т.е. Cx-Ax=K*N, Cy-Ay=L*M K*N/(N*НОД)=L*M/(M*НОД) сокращаем: K=L т.е. Cx-Ax=K*N, Cy-Ay=K*M это K не может быть меньше 0 или больше НОД, т.к. точка вылезет за пределы отрезка и равна она быть тоже не может, т.к. концы отрезка нас не интересуют значит K - целое в пределах [1,...,НОД-1] P.S. что-то, чувствую, немного кривоватое доказательство - в смысле можно короче -------------------- qqq |
|||
|
||||
| Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: нет Всего: 7 |
Ошибки никак найти не могу. Видимо это победа
спасибо -------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |