Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 18
1

Дано натуральное число n, проверить, кратно ли оно 11 используя признак делимости на 11

30.11.2018, 14:22. Показов 2284. Ответов 18
Метки нет (Все метки)

Помогите задачу решить:
Дано натуральное число n, проверить, кратно ли оно 11 используя признак делимости на 11.
Вот моя работа под задачу "кратно ли 3", но вот на "кратно 11" пока не допёр как решать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
 
int main()
{
        setlocale(LC_ALL, "Russian");
    int n;
    cout << "Введите число N = ";
    cin >> n;
    int krtnost = 0;
    while (n > 0)
    {
        krtnost += n % 10;
        n /= 10;
    }
    if (sum % 3 == 0)
    {
        cout << "Число N кратно 3 \n";
    }
    else
    {
        cout << "Число N не кратно 3 \n";
    }
    system("pause");
    return 0;
}
Может я глупый, но прочитав признак делимости на 11 мне стало плохо) Ничего не понятно, из похожих задач на форуме тоже, если не сложно помогите пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2018, 14:22
Ответы с готовыми решениями:

Проверить, кратно ли р девяти, используя признак делимости на девять
Мне срочно необходимо решение этой задачи пожалуйчта помогите мне... Дано натуральное число p....

Дано натуральное число х. Определить кратно ли это число 2, 3, 5
Разработать программу, использующую разветвления в visual c++ 6.0 с коментариями

Функции. Проверить, простое число или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым
Помогите пожалуйста 1. Дано натуральное число N, проверить, простое оно или нет. Увеличить его...

Дано натуральное число P. Проверьте, кратно ли P трем, используя признак делимости на 3
Дано натуральное число P. Проверьте, кратно ли P трем, ис-пользуя признак делимости на 3. В...

18
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
30.11.2018, 14:33 2
Gudaniky,
А в чем сакральный смысл искать сумму цифр числа, после искать остаток от деления этой суммы на 3, если можно сразу найти остаток от деления самого числа на 3?
Так же и с делимостью на 11.
0
243 / 62 / 14
Регистрация: 05.04.2018
Сообщений: 963
Записей в блоге: 1
30.11.2018, 14:36 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main()
{
    int i;
    cin >> i;
    
    if(i % 11 != 0) {
        cout << "not multiply.";
    }
    else {
        cout << "The number is multiply.";
    }
    
    return 0;
}
'11' подменяй на любое число, какое нужно для вычисления кратности.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 18
30.11.2018, 14:40  [ТС] 4
Потому что задачи цель проверить кратно ли оно по признаку кратности
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 18
30.11.2018, 14:41  [ТС] 5
Спасибо конечно, но это не то, нужно по признаку кратности на 11
Миниатюры
Дано натуральное число n, проверить, кратно ли оно 11 используя признак делимости на 11  
0
259 / 109 / 53
Регистрация: 22.01.2017
Сообщений: 435
30.11.2018, 14:42 6
del
0
зомбяк
1543 / 1185 / 336
Регистрация: 14.05.2017
Сообщений: 3,848
30.11.2018, 14:44 7
Думаю речь о https://ru.wikipedia.org/wiki/Признак_Паскаля

Отсюда можно получить простой признак делимости на 11:

остаток от деления числа на 11 равен остатку от деления его суммы цифр, где каждая нечётная (начиная с единиц) цифра взята со знаком «−», на 11.
Проще говоря:

если разбить все цифры числа на 2 группы — через одну цифру (в одну группу попадут все цифры с нечётными позициями, в другую — с чётными), сложить все цифры в каждой группе и вычесть одну полученную сумму из другой, то остаток от деления на 11 результата будет такой же, что и у первоначального числа.
0
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
30.11.2018, 14:46 8
n1b1ru,
Использование строки при решении задачи с числом - первый шаг к резиновой женщине! )
Почему:
Кликните здесь для просмотра всего текста
Потому что проще, чем с настоящей.
1
259 / 109 / 53
Регистрация: 22.01.2017
Сообщений: 435
30.11.2018, 14:57 9
C++
1
2
3
4
5
6
7
8
9
10
std::string N = "555550512";
int odd = 0;
int even = 0;
for(unsigned i = 0; i < N.size(); ++i) {
    (i % 2) ? even += N[i] - '0'
            : odd += N[i] - '0';
}
 
(odd == even || !((odd - even) % 11)) ? cout << "True"
                                      : cout << "False";
Добавлено через 7 минут

Не по теме:


Даценд, делал и буду делать...
А сравнение, мягко говоря странное )

0
Продавец времени
6032 / 3310 / 766
Регистрация: 12.03.2015
Сообщений: 15,802
30.11.2018, 15:04 10
Признак делимости на 11. На 11 делятся только те числа, у которых сумма цифр, стоящих на нечётных местах, либо равна сумме цифр, стоящих на чётных местах, либо отличается от неё на число, делящееся на 11.
Этож бесконечная рекурсия, мать яё!
0
Заблокирован
Эксперт C
30.11.2018, 15:37 11
Цитата Сообщение от Verevkin Посмотреть сообщение
Этож бесконечная рекурсия, мать яё!
Ну уж прям и бесконечная!
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool Pri11(int n)
{
   int s = 0;
   for(int i=0; n; i= (i+1)%2) {
     if (i==0) s += n%10;
     else s -= n%10;
     n /= 10;
   }
   if (s < 0) s = -s;
   if (s==0) return true;
   else return Pri11(s);
}
0
Продавец времени
6032 / 3310 / 766
Регистрация: 12.03.2015
Сообщений: 15,802
30.11.2018, 15:43 12
Цитата Сообщение от Байт Посмотреть сообщение
Ну уж прям и бесконечная!
Шуток, штоли, не понимаешь?
0
Заблокирован
Эксперт C
30.11.2018, 16:07 13

Не по теме:

Цитата Сообщение от Verevkin Посмотреть сообщение
Шуток, штоли, не понимаешь?
Да вроде, понимаю... А ты?



Добавлено через 12 минут
Кстати, да. Мой код можно считать шуткой, ибо он вполне может зациклиться. И даже обязательно сделает это 90.9091 процентах случаев. Правильно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool Pri11(int n)
{
   int s = 0;
   for(int i=0; n; i= (i+1)%2) {
     if (i==0) s += n%10;
     else s -= n%10;
     n /= 10;
   }
   if (s < 0) s = -s;
   if (s==0) return true;
   else if (s<11) return false;
   else return Pri11(s);
}
Добавлено через 8 минут
Прошу прощения у уважаемой публики, что на секунду ввел в заблуждение...
Правда, для полной уверенности, надо доказать, что рассматриваемый процесс будет давать s < n (при n > 10). Но это не очень сложно. Сомневающиеся могут опубликовать этот вопрос в разделе "Математика". Тамошние жители с удовольствием предоставят строгое доказательство...
0
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
30.11.2018, 17:11 14
Осмелюсь предложить свой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
bool Pri11(int n)
{
    if (abs(n) < 11) return n == 0;
    int s = 0;
    while (n)
    {
        s += n % 100 / 10 - n % 100 % 10;
        n /= 100;
    }
    return Pri11(s);
}
Добавлено через 15 минут
Цитата Сообщение от n1b1ru Посмотреть сообщение
делал и буду делать...
Как насчет числа -11?
1
259 / 109 / 53
Регистрация: 22.01.2017
Сообщений: 435
30.11.2018, 17:25 15
Цитата Сообщение от Даценд Посмотреть сообщение
Как насчет числа -11?
А что с ним не так?
0
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
30.11.2018, 17:29 16
Цитата Сообщение от n1b1ru Посмотреть сообщение
А что с ним не так?
Та шо-то "False" ваша функция пишет при
C++
1
std::string N = "-11";
0
259 / 109 / 53
Регистрация: 22.01.2017
Сообщений: 435
30.11.2018, 17:33 17
Даценд,
Цитата Сообщение от Gudaniky Посмотреть сообщение
Дано натуральное число n
1
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
30.11.2018, 17:36 18
n1b1ru,
шайтанама!
0
259 / 109 / 53
Регистрация: 22.01.2017
Сообщений: 435
30.11.2018, 17:40 19
Даценд,
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2018, 17:40

Дано натуральное число P. Проверьте, кратно ли число P девяти, используя признак делимости на 9
Дано натуральное число P. Проверьте, кратно ли число P девяти, используя признак делимости на 9.

Кратно ли число трем, используя признак делимости на 3.
Дано натуральное число P. Проверьте, кратно ли Р трем, используя признак делимости на 3....

Кратно ли число одиннадцати, используя признак делимости на 11
Надо написать программу на паскале, с использованием функций(процедур) и массивов! Дано...

Рекурсия: с помощью признака делимости на 3 проверить, кратно ли данное натуральное число 3
Доброго времени суток! Извините, что отвлекаю. 2 таких задачки попались на рекурсии. 1)С помощью...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

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