Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Martis
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 4
25.11.2011, 04:14     Деление на 41 #1
Надо сделать программу на C, которая печатает все пятизначные числа, которые делится из 41 и которых циклично переставляя полученные числа тоже делится из 41. Например число 15498 циклично переставляется так: 81549, 98154, 49815, 54981. Все числа делится из 41.
Помогите пожалуйста
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 04:14     Деление на 41
Посмотрите здесь:

C++ Деление на 0
C++ Деление
деление на 0 C++
Деление C++
деление на 0 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
25.11.2011, 06:00     Деление на 41 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
#define n   10000
#define m   100000
 
int main()
{
    int num = 41;
    int tmp_num = num;
 
    while ( tmp_num < n )
        tmp_num += num;
 
    while (tmp_num < m )
    {
        printf("%d\t", tmp_num);
        tmp_num += num;
    }
 
    return 0;
}
Добавлено через 1 минуту
только прежде чем писать что это не правильное решение, лучше проверить
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 06:07     Деление на 41 #3
Martis, а по-русски нельзя?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
25.11.2011, 06:19     Деление на 41 #4
Цитата Сообщение от alkagolik Посмотреть сообщение
не правильное
это не я писал)) простите блячепятку и не кидайте помидорами.
Martis
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 4
25.11.2011, 13:16  [ТС]     Деление на 41 #5
только прежде чем писать что это не правильное решение, лучше проверить
Спасибо. Проверил пару чисел, вроде все делится из 41. Я пробовал делать, но совсем не так...
Спасибо
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 13:18     Деление на 41 #6
Цитата Сообщение от Martis Посмотреть сообщение
делится из 41
В смысле? Как вообще понять "делится из"?
Martis
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 4
25.11.2011, 13:31  [ТС]     Деление на 41 #7
Мне трудно писать по русски, так может я неправильно объяснил.
Надо найти все пятизначные числа, которые делится из 41 без остатка. Например:
15498/41=378
циклично переставляем:
81549/41=1989
98154/41=2394
49815/41=1215
54981/41=1341
Все делится без остатка
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
25.11.2011, 14:49     Деление на 41 #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
этим свойством обладают все числа n, кратные 41 10004 <= n <100000. Когда написал программу, был удивлен слишком большим количеством выданных чисел, начал выборочно прверять любое из них - все при циклической перестановке делятся без остатка на 41, залез в отладчик - все нормально, программа работает верно. прикрутил счетчики к программе и на выходе счетчик показал что ни одно число из ряда не было опущено из выхода, т.е. напечатались все, кратные 41. По запросу в гугле нашел только маленькую статейку, где 41 упоминается вскользь. Вот функция проверки
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define n   10000
#define m   10
 
_Bool isnotmod(int num, int base)
{
    int tmp, k = 4, tmp_num = num;
 
    while (k--)
    {
        tmp = (tmp_num % m) * n + tmp_num / m;
        tmp_num = tmp;
        if ( tmp_num % base)
            return 0;
    }
    return 1;
}
odip
Эксперт C++
 Аватар для odip
7224 / 3286 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
25.11.2011, 16:26     Деление на 41 #9
начал выборочно проверять любое из них - все при циклической перестановке делятся без остатка на 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 сдвигов дадут исходное число
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 16:29     Деление на 41 #10
Цитата Сообщение от Martis Посмотреть сообщение
которые делится из 41 без остатка.
Что вообще такое "делится из"? А также "делится над", "делится в", "делится под", "делится за", "делится у" и "делится перед"?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2011, 20:09     Деление на 41
Еще ссылки по теме:

Деление на 1 C++
C++ Деление
Деление на 6 C++

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

Или воспользуйтесь поиском по форуму:
Martis
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 4
25.11.2011, 20:09  [ТС]     Деление на 41 #11
Спасибо за быстрое решение и объяснения. Буду продавать разобратса
Yandex
Объявления
25.11.2011, 20:09     Деление на 41
Ответ Создать тему
Опции темы

Текущее время: 09:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru