Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Получение максимального числа X кратного K

38K
19 декабря 2010 года
EqKeeper
94 / / 19.02.2010
Требуется помощь в написании простенькой вроде бы формулы, над которой я бьюсь уже шесть часов...

Попутно вывел две формулы, которые дают верные результаты только при k < 2. А нужно для любого целого числа... Вот они:
 
Код:
x = (x + 1) / k * k - 1
x = x - (k - (x % k) - 1)


Получить нужно наибольшее кратное числа X, меньшее числа X + 1.
Если объяснил непонятно, то вот табличка вывода:

Код:
1 | 1 = 1
2 | 1 = 2
3 | 1 = 3
4 | 1 = 4

1 | 2 = 1
2 | 2 = 1
3 | 2 = 3
4 | 2 = 3

1 | 3 = 1
2 | 3 = 1
3 | 3 = 1
4 | 3 = 4
5 | 3 = 4
6 | 3 = 4
7 | 3 = 7


Буду очень благодарен, если кто-нибудь сможет помочь. У меня уже мозг отказывается соображать... =\

P.S. Хотелось бы именно формулу, а не связку условий...
38K
19 декабря 2010 года
EqKeeper
94 / / 19.02.2010
*нервный смех*
Естественно, решение нашлось сразу, после создания темы. Ответ:
 
Код:
x = (x - 1) / k * k + 1

Видимо, перечитав свой пост, я наконец понял чего хочу и как этого добиться... :)

Всем спасибо, извините за беспокойство. :)
5
19 декабря 2010 года
hardcase
4.5K / / 09.08.2005
Формулировка странная. Учитывая то, что множество натуральных чисел бесоконечно, то найти наибольшее число кратное некоторому зафиксированному невозможно.
Подозреваю, что ты ищешь алгоритм Наибольшего Общего Делителя?

Кстати, раз зашел разговор о НОДе, рекомендую посмотреть лекцию Степанова в Яндексе: "Самый Главный Алгоритм".
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог