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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Martis
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 4
#1

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

25.11.2011, 04:14. Просмотров 1444. Ответов 10
Метки нет (Все метки)

Надо сделать программу на 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++
#include <iostream> #include <cstdlib> #include <conio.h> using namespace std; char *fortunes = {"Its ok\n", "Very good\n",...

Деление - C++
Оригинал условия тут Входной файл input.txt: Первая строка-количество фирм Вторая строка-доходы фирм Третья строка-налог на фирмы(в...

Деление - C++
Надо разделить на два заданное четное натуральное число с количеством цифр меньше 100. Нужно использовать не арифметические, а символьные...

Деление на 0 - C++
задача: Условие Имеется N человек и матрица А размера N´N. Элемент A матрицы равен 1, если человек i знаком с человеком j (если...

деление на 0 - C++
у меня есть код задачи .. помогите пожалуйста.. надо переделать код, чтобы в 14 строчке (case '/': cout<<"4astka\t"<<b/c<<endl; break;)...

Деление - C++
Оригинальное задание звучит так: Вот, что я наваял: //The program divides the first number by the second one. //It should...

Деление в С++ - C++
Добрый день :) Написал программу, которая будет вычислять винрейт в дота 2: int win; int lose; int all(0); double winrate(0.0); ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
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
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 06:07     Деление на 41 #3
Martis, а по-русски нельзя?
alkagolik
Заблокирован
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
Ушёл с форума.
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
Заблокирован
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
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
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
Ушёл с форума.
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++
Здравствуйте! В программ есть операция которая делит числа на 1, чтобы найти частоту. Так вот, например, когда я делю 1/186 ответ выдает...

деление на 0 - C++
столкнулся с проблемой деления на 0. нужно сделать так. чтобы программа не делила на 0. по средством switch не получалась. вот код ...

Деление на 6 - C++
Люди, не могу понять, неужели я такой никчема? Задача: Заданы N целых чисел. Определить сумму и количество тех чисел, которые...

Деление дробей. - C++
Задача: вывести в порядке возрастания все правильные несократимые дроби со знаменателем, не превосходящим n. Сам код: #include...

Деление массива - C++
Допустим, есть у меня массив char с большим количеством цифр чем помещается в int или long. Мне надо его воспринять как число и вывести...


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

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

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