![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
AB96 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 14.12.2015 Репутация: нет Всего: нет |
Здравствуйте! В общем, у меня такая ситуация, я могу получить автомат за экзамен по C. Осталось решить три задания. Два решил, с одним заданием возникли сложности. Условие задания: Число n вводится своим двоичным представлением (длина числа не превышает 100 двоичных разрядов). Необходимо определить делится ли введённое число n на 15. Прошу Вас, помогите! Заранее спасибо!
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
xoptov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.2.2008 Репутация: нет Всего: нет |
Ну все просто если есть остаток от опирации 15 % n то число n не кратно 15, а если 15 % n не имеет остатка то есть возвращает 0 то n кратно 15
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
не 15 % n, а n % 15
-------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Да уж. А если число изначально задано в двоичной системе счисления (т.е. строковое представление) и состоит из множества разрядов (100 - это отнюдь не предел), то всё ещё проще, да? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Для любых divider и base если divider*base влезает в int Это сообщение отредактировал(а) math64 - 15.12.2015, 12:32 |
|||
|
||||
Sajtran |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.10.2008 Где: Мегион Репутация: нет Всего: 2 |
если число делится на 15, то оно должно делиться и на 5 и на 3
в десятичной системе, признаки деления на 3 - сумма чисел кратна трём на 5 - заканчивается на 0 или на 5 запрашиваете число в виде строки и проверяете эти два условия Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Sajtran |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.10.2008 Где: Мегион Репутация: нет Всего: 2 |
опс, надо найти те же правила для двоичной системы
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Есть такое полезное утверждение: в системе счисления с основанием n число делится на n-1 тогда и только тогда, когда сумма его цифр (цифры, разумеется, тоже надо брать в соответствующей системе счисления) делится на n-1. Доказательство элементарно.
Отсюда вариант (не единственно возможный, но все же). Переведите число в 16-ричную запись (это тривиально - каждый блок по четыре двоичных цифры соответствует одной 16-ричной)... Дальше продолжать? ![]() |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
На подобный вариант я ссылку давал. Но я за решение от math64, оно более общее, прозрачное и проще реализуемое. Предлагаемый Вами вариант - это просто частный случай этого решения ![]() -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Для тех кто пользуется новым винградом:
Я правил своё сообщение - в новом винграде виден только первоначальный вариант. |
|||
|
||||
magnet |
|
|||
Unregistered |
В каком формате представлены входные данные - не понятно. Так что сам озаботься, а я приведу пару строчек:
Это алгоритм. Если число будет вводиться с клавиатуры, то нужно подумать.. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
magnet |
|
|||
Unregistered |
Ну, собственно, вот классический Цэ:
Подробно тебе всё закомментировал и натыкал принтов, чтоб было видно, как оно работает. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
||||
|
||||
Sajtran |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.10.2008 Где: Мегион Репутация: нет Всего: 2 |
ну если после этого ответа ТС не получил автомат, то он его не заслуживает :-)
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |