|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.12.2015, 19:04 | #1 |
Пользователь
Регистрация: 20.10.2015
Сообщений: 22
|
Делится ли введённое число n на 15
Здравствуйте! В общем, у меня такая ситуация, я могу получить автомат за экзамен по C. Осталось решить три задания. Два решил, с одним заданием возникли сложности. Условие задания: Число n вводится своим двоичным представлением (длина числа не превышает 100 двоичных разрядов). Необходимо определить делится ли введённое число n на 15. Прошу Вас, помогите! Заранее спасибо!
|
14.12.2015, 19:09 | #2 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Задание прекрасно
Переводите в 16-те ричную и смотрите на остаток от деления на 15 суммы |
14.12.2015, 19:25 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Наверно без длиной арифметики не обойтись, преобразуя в массив десятичных цифр. А потом если сумма цифр делится на 3 и последняя 0 или 5, то делится на 15
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
14.12.2015, 19:38 | #4 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Ну неее.
Ей Богу так работает.. Помните вы меня учили доказывать что число делится на 9 если сумма цифр делится на 9? Тут точно также. Число K в системе счисления с основанием N будет делиться на N-1 тогда и только тогда, когда сумма цифр делится на N-1 А у нас в 2. Переводим в 16 заменяя тетрады |
14.12.2015, 19:46 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Наверно. А еще вспомнил, что есть признаки делимости двоичного числа на 3 и 5. Только их найти нужно. Этого тоже достаточно будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
14.12.2015, 20:43 | #6 |
Пользователь
Регистрация: 20.10.2015
Сообщений: 22
|
Что-то не очень понял...
Это, наверное, неверно? Код:
Последний раз редактировалось Stilet; 14.12.2015 в 22:38. |
14.12.2015, 21:36 | #7 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
не..
Предлагаю так. Заполняем массив 0\1 с конца. В какой-то момент получили массив длины K. До тех пор - пока K%4 != 0 добавляем 0 в конец массива. Как только закончили - идем по 4-кам (с начала -с конца - пофигу). Четыре 0\1 преобразуем в 16-ричное число. И прибавляем его к sum. В конце все зависит от sum%15 |
15.12.2015, 09:55 | #8 |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
Число делится на 15, если оно делится на 3 и на 5. В десятичном представлении признак делимости на 3 - делимость суммы цифр на 3, многозначная сумма цифр проверяется по тому же признаку, а среди однозначных делятся: 3, 6 и 9. Признак же делимости на 5 - окончание записи числа на 0, или на 5. Но в двоичном не знаю.
Нашёл. Если знакопеременная сумма цифр числа делится на число, на 1 большее основания, то и само число делится на число, на 1 большее основания. В двоичной системе по этому признаку можно проверить делимость на 3, а в четвертичной - на 5, при этом перевод в из двоичной системы в четвертичную не требует фактического преобразования, так как смешанная двоично-четвертичная эквивалентна двоичной, то есть просто сгруппируй биты по два и получишь двоичную запись четвертичных цифр и складывай их, как числа с чередованием знака. При получении суммы с более чем двумя значащими цифрами делимость проверяется рекурсивно, то есть делимость знакопеременной суммы цифр проверятся по тому же самому признаку, что и делимость самого числа. Если число делится на 3 и на 5, значит оно делится на 15. Последний раз редактировалось Stilet; 15.12.2015 в 10:57. |
15.12.2015, 11:12 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Poma][a, а зачем так сложно то?
Тут же уже неоднократно предлагали простейший алгоритм вводим строку. Если длина строчки меньше двух - выход с сообщением, что число НЕ ДЕЛИТСЯ на 15 Если длина строки равна двум - перевод строки в число, проверяем остаток от деления на 15 - если он равен нулю - число ДЕЛИТСЯ на 15, иначе, если остаток не равен нулю - число НЕ ДЕЛИТСЯ на 15 Если длина строки больше двух: находим сумму всех цифр строки. если сумма_всех_цифр_строки делится на 3 и последнюю цифра строки равна 0 или 5 - тогда ДЕЛИТСЯ на 15 иначе - число НЕ ДЕЛИТСЯ на 15 всё. в коде это будет короче, чем я тут расписывал! |
15.12.2015, 11:26 | #10 |
Подтвердите свой е-майл
Регистрация: 12.11.2014
Сообщений: 470
|
1. Сколько времени уйдёт на парсинг записи числа, для которого нужны 100 бит? А я парсить не предлагаю.
2. Сколько времени уйдёт на деление стабитного числа? А сколько на 50 инкрементов и 50 декрементов в цикле? 3. Какова сложность парсинга записи числа, для которого нужны 100 бит? А я парсить не предлагаю. 4. Какова сложность реализации длинного деления? А какова сложность использования готовых инкремента и декремента и реализации простейшего цикла? Строка как раз не дана, а дано стобитное число, которое ещё перевести надо в строчную форму. 5. Сколько времени уйдёт на перевод стабитного числа в строчную форму? А я ничего переводить в строчную форму не предлагаю. 6. Какова сложность реализации перевода стабитного числа в строчную форму? А я ничего переводить в строчную форму не предлагаю. Так что Ваш алгоритм монструозен, а мой примитивен. Последний раз редактировалось taras-proger; 15.12.2015 в 11:37. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двумерный массив, находится ли в двумерном массиве введённое с клавиатуры число (Delphi 7) | Юля_7182 | Помощь студентам | 22 | 26.05.2014 17:36 |
Даны натуральные K и L. Определить, делится ли K нацело на L. Если делится, то заменить эти числа их квадратами, в противном случ | Proskurina | Помощь студентам | 1 | 27.03.2013 21:39 |
Как разделить введённое n значное число на отдельны цифры? | mig-29 | Общие вопросы C/C++ | 5 | 22.05.2009 16:30 |
Ввести число N и определить делится ли оно без остатка на число M (VBA) | Ivanich | Microsoft Office Excel | 7 | 24.04.2008 19:43 |
Как разделить введённое n значное число на отдельны цифры? | mig-29 | Помощь студентам | 13 | 04.04.2008 20:01 |