Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 40

Задача на НОД,НОК

07.03.2012, 00:09. Показов 4682. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вокруг звезды вращается n планет. Тангенциальная скорость планет постоянна. Направление вращений планет одинаково. Парадом планет называется момент времени, в который все планеты располагаются на одной прямой. Необходимо вычислить промежуток времени между последовательными парадами планет.За заданным количеством планет n вычислить n чисел – периоды вращения планет.

Создал алгоритм математически, но не знаю, как его реализовать на С++.
Такой вот алгоритм:Рассмотрим i - ую и j - ую планету. Они вместе с солнцем будут находиться на одной прямой через время t, если

Здесь через {x} обозначена дробная часть числа x.
Или то же самое, что значение

является целым. Поскольку i и j – любые значения от 1 до n, то можно утверждать, что число
K =
должно быть целым. Если в качестве t взять значение a / b, где
a = НОК(t1, t2, …, tn), b = 2 * НОД(t1 – t0, t2 – t0, …, tn – t0),
то значение K будет целым. Переменной t0 следует присвоить наименьшее значение из ti. Осталось сократить дробь a / b на их наибольший общий делитель.

Покажем, как вычислить a = НОК(t1, t2, …, tn), совершив минимум операций над большими числами (значение а является большим). Переберем все пары (ti, tj), i < j , для каждой пары вычислим d = НОД(ti, tj), после чего разделим tj на d. После этого произведение оставшихся ti равно значению а.
Изображения
 
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2012, 00:09
Ответы с готовыми решениями:

НОД и НОК
Дан НОД и НОК надо найти каким числом они (НОД и НОК) принадлежат

НОД и НОК
Вводятся два натуральных числа. Вывести их наибольший общий делитель (НОД) и наименьшее общее кратное (НОК). НОК находится как произведение...

НОК и НОД
Здоров Всем ! Вот условие : Определить функцию для нахождения наименьшего общего кратного (НОК) и наибольшего общего...

6
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
07.03.2012, 04:37
Джон, вопрос-то в чем? То что нужно вычислить
Цитата Сообщение от Джон Посмотреть сообщение
a = НОК(t1, t2, …, tn)
тут Вы правы.
А то как Вы это делаете:
Цитата Сообщение от Джон Посмотреть сообщение
Переберем все пары (ti, tj), i < j , для каждой пары вычислим d = НОД(ti, tj), после чего разделим tj на d. После этого произведение оставшихся ti равно значению а.
не понятно.
Если вопрос именно в этом, то лучше в ручную распишите, как вычисляете НОК(3,4,5,6).
Также напишите максимально возможное n и ti.
Если есть ссылка на задачу, то лучше лучше укажите ссылку.
0
 Аватар для alekola
22 / 22 / 6
Регистрация: 04.08.2011
Сообщений: 103
07.03.2012, 07:36
Эм, честно не уверен но вроде ссылки за форум разрешены.
Вообщем у меня на сайте есть функции для нахождения НОД и НОК,
можете поглядеть http://www.kolesnikov-dv.ru/?p=49 все с комментариями
0
54 / 54 / 10
Регистрация: 26.09.2011
Сообщений: 186
07.03.2012, 11:12
Мне кажется, что здесь ещё формулы должны были быть, которые по каким-то причинам не отобразились.... Надо бы обновить
0
93 / 69 / 22
Регистрация: 17.10.2011
Сообщений: 235
07.03.2012, 11:48
Цитата Сообщение от Джон Посмотреть сообщение
Вокруг звезды вращается n планет. Тангенциальная скорость планет постоянна. Направление вращений планет одинаково. Парадом планет называется момент времени, в который все планеты располагаются на одной прямой. Необходимо вычислить промежуток времени между последовательными парадами планет.За заданным количеством планет n вычислить n чисел – периоды вращения планет.

Создал алгоритм математически, но не знаю, как его реализовать на С++.
Такой вот алгоритм:Рассмотрим i - ую и j - ую планету. Они вместе с солнцем будут находиться на одной прямой через время t, если

Здесь через {x} обозначена дробная часть числа x.
Или то же самое, что значение

является целым. Поскольку i и j – любые значения от 1 до n, то можно утверждать, что число
K =
должно быть целым. Если в качестве t взять значение a / b, где
a = НОК(t1, t2, …, tn), b = 2 * НОД(t1 – t0, t2 – t0, …, tn – t0),
то значение K будет целым. Переменной t0 следует присвоить наименьшее значение из ti. Осталось сократить дробь a / b на их наибольший общий делитель.

Покажем, как вычислить a = НОК(t1, t2, …, tn), совершив минимум операций над большими числами (значение а является большим). Переберем все пары (ti, tj), i < j , для каждой пары вычислим d = НОД(ti, tj), после чего разделим tj на d. После этого произведение оставшихся ti равно значению а.
во первых:слишком много пар сравнивается, во вторых: так нельзя НОК всех чисел найти
1) НОК (a,b,c,d,e ...) = НОК( НОК(a,b) , c,d,e ...) или НОК ( НОК(a,b), НОК(c,d,e ...))
2) если планеты i,j - на одной линии с солнцем, i,k - на одной линии с солнцем, тогда j,k на одной линии с солнцем и их не надо проверять
т.е. достаточно выбрать жертву(допустим ближайшая планета), а остальные должны быть на одной линии с ней и с солнцем

т.е. алгоритм совсем простой
надо найти HOK(L,t2-t1,t3-t1,...,tn-t1),
L-Pi радиан или 180° или 200 градиан или что там еще?
0
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 40
07.03.2012, 12:49  [ТС]
Так выглядит задача, если я как-то неправильно поставил ее условие.
http://www.e-olimp.com.ua/problems/1185
0
93 / 69 / 22
Регистрация: 17.10.2011
Сообщений: 235
07.03.2012, 13:32
Цитата Сообщение от Джон Посмотреть сообщение
Так выглядит задача, если я как-то неправильно поставил ее условие.
http://www.e-olimp.com.ua/problems/1185
теперь я даже не представляю что ты там писал, есть кстати предпросмотр когда мессдж отправляешь
вот в цитате предыдущей видно, что ты запостил, и не видно, что ты хотел этим сказать
после всяких "если" "значение" "К=" следует пустота
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2012, 13:32
Помогаю со студенческими работами здесь

НОК НОД
Можно ли использовать такой код для нахождения НОК НОД? #include &lt;iostream&gt; #include &lt;conio.h&gt; using std::cout; using std::cin; ...

Вычисление НОД и НОК
Нужно написать программу по вычислению НОД и НОК. Мысли проскакивают, но не полное решение). Подскажите кто сможет, только не кидайте...

Функция НОД->НОК
Пожлуйста помогите разобратьв функциях... Написать функцию поиска НОК двух целых чисел... Функцию НОК как я понимаю нужно сделать через...

Нахождение НОД и НОК двух чисел
Вот код программы на Паскале нужно переделать на С++ { Рекурсивные алгоритмы: нахождения НОД и НОК двух чисел } var a,b:longint; ...

НОД и НОК для 3-х чисел,перегрузка функции
Здравствуйте. Имеется код: #include&lt;iostream&gt; #include&lt;math.h&gt; #include&lt;locale.h&gt; using namespace std; int nod(int, int); ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере 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