Форум программистов, компьютерный форум, киберфорум
Наши страницы

Деление на 41 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите компилятор С++, для ассемблерных вставок на х64 код http://www.cyberforum.ru/cpp-beginners/thread391347.html
Подскажите компилятор С++ который понимает inline ассемблерные вставки на х64 код.
C++ Структуры. Сортировка массива структуры Здравствуйте! В чем моя ошибка?? Нужно отсортировать массив структуры по возрастанию среднего балла?? Делаю это с помощью пузырьковой сортировки Данные в структуру считываю с файла http://www.cyberforum.ru/cpp-beginners/thread391345.html
C++ Чтение положительных чисел из строки
Здравствуйте. Есть задача: дана строка с числами, разделенными пробелами. Необходимо из строки сохранить положительные числа. Разделение сделал, но как можно полученные подстроки перевести в числа и...
C++ двумерный массив! кто знает?
Всем привет! Вопрос: Как в двумерном массиве посчитать количество столбцов, содержащих хотя бы один нулевой элемент!?
C++ Добавление экземпляра структуры в конец коллекции http://www.cyberforum.ru/cpp-beginners/thread391334.html
У меня задание: . Структура "Человек": - фамилия, имя, отчество; - домашний адрес; - номер телефона;
C++ Сортировка строк не используя стандартных функций Итак, дословно оглашу задачку: "Рассортировать массив строк в алфавитном порядке, перемещая строки. Стандартных функций работы со строками не использовать." Я решил, что строки будут вводиться с... подробнее

Показать сообщение отдельно
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
25.11.2011, 16:26
начал выборочно проверять любое из них - все при циклической перестановке делятся без остатка на 41
Это нетрудно доказать для 5-значных чисел

Например число 81549 делится на 41
Обозначим B==8, A==1549

Число B*10000+A делится на 41, значит остаток от деления на 41 равен 0
То есть верно (B*10000+A) mod 41 = 0

Так как 10000 mod 41 = 37
То будет верно (B*37+A) mod 41 = 0
Умножим левую и правую части на 10

Имеем верное выражение (B*370+A*10) mod 41 = 0

Так 370 mod 41 = 1
То будет верно (B+A*10) mod 41 = 0

Получается что число (B+A*10) делится на 41 без остатка

Исходное число было 81549
Если внимательно посмотреть на число B+A*10, то это будет число 15498

То есть мы доказали что если 5-значное число делится на 41
то и циклический сдвиг влево на 1 знак тоже дает число которое делится на 41

Если сделать два сдвига подряд - то тоже делится
И три сдвига
И четыре сдвига

При этом 5 сдвигов дадут исходное число
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru