Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34

Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n

18.10.2015, 11:16. Показов 1847. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите плиз

Нужно написать программу, которая по целому положительному числу n вычисляет количество положительных целых чисел меньших n таких, что их сумма цифр (в десятичной записи) равна сумме цифр в числе n.

Формат входа: целое положительное число n<107.

Формат вывода: количество таких целых положительных чисел меньших n, у которых сумма цифр равняется сумме цифр числа n.

пример ввода:
123
пример вывода:
9
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2015, 11:16
Ответы с готовыми решениями:

Верно ли что число 4-значное и у него сумма крайних цифр равна сумме средних цифр? Найти все такие числа.
Написать программу : Дано нат. число. Верно ли что число 4-значное и у него сумма крайних цифр равна сумме средних цифр? Найти все такие...

Счастливым будет считаться такое число из шести цифр, в котором сумма левых трех цифр равна сумме правых трех цифр
помогите студентке:cry: Счастливым будет считаться такое число из шести цифр, в котором сумма левых трех цифр равна сумме правых трех...

Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27
Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27. объясните...

11
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
20.10.2015, 13:11
saymeit, есть какие-нибудь наработки?
0
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
22.10.2015, 00:04  [ТС]
Уже написал, может неоптимально конечно, но работает:
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
30
31
#include <iostream>
int sumOfDigit(int n) {
    int x = 0,y = 0;
    if(n < 0)   n *= -1;
    while(n>=1)
    {
        x = n%10;
        n /= 10;
        y += x;
    }
    return y;
}
 
int checkN(int value) {
    int cnt = 0;
    for (int i = 0; i < value; i++) {
        if (sumOfDigit(i) == sumOfDigit(value)) {
            cnt++;
        }
    }
    return cnt;
}
 
int main(int argc, const char * argv[]) {
    int N;
    while (std::cin >> N) {
        int res = checkN(N);
        std::cout << res << std::endl;
    }
    return 0;
}
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.10.2015, 00:16
Цитата Сообщение от saymeit Посмотреть сообщение
Уже написал,
Ну что ж. ИМХО, вполне прилично. На работу не проверял, но верю.
Цитата Сообщение от saymeit Посмотреть сообщение
может неоптимально
Есть одна существенная неоптимальность. sumOfDigit(value) повторяется в цикле value раз. И дает, естественно, одно и тоже значение. Может быть логичнее его вычислить до цикла?
0
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
22.10.2015, 00:29  [ТС]
Цитата Сообщение от Байт
Есть одна существенная неоптимальность. sumOfDigit(value) повторяется в цикле value раз. И дает, естественно, одно и тоже значение. Может быть логичнее его вычислить до цикла?
Да, благодарю за совет, так действительно будет лучше!
0
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 03:42
в моем коде работает только та часть которая, считает сумму цифр в n, дальше беда.
по моему перемудрил с вложенными циклами, но не могу понять в чем конкретно ошибка. буду благодарен за помощь.
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
30
31
32
33
34
#include <iostream>
using namespace std;
 
int main () 
{
    int n = 0;
    int sum = 0;
    cin >> n;
    int n1 = n;
    while (n1 != 0) 
    {
        sum += n1 % 10;
        n1 /= 10;
    } 
    //cout << sum << " " << n << endl; // до этого места все работает
    
    int sumx = 0;
    int a = 0;
    int x = 1;
    for (x; x < n; x++) //здесь я пытаюсь перебрать числа от 1 до 'n'
    { // и посчитать цифр входящих в каждое, кол-во таких цифр записать в 'а'
     // и вывести получившееся 'a'
        while (x != 0) 
        {
            sumx += x % 10;
            x /= 10;            
        }
        if (sumx == sum) {
                 a++;
            }
    }
    cout << a << endl;
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.10.2015, 10:54
sm_, у тебя цикл по x. А внутри этого цикла ты этот x беспощадно меняешь
1
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 11:11
Байт, исправил, но все равно не выходит - для числа 123, например, таких чисел должно быть девять,
а программа выдает что их ноль:
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
30
31
32
33
34
35
#include <iostream>
using namespace std;
 
int main () 
{
    int n = 0;
    int sum = 0;
    cin >> n;
    int n1 = n;
    while (n1 != 0) 
    {
        sum += n1 % 10;
        n1 /= 10;
    } 
    //cout << sum << " " << n << endl; // до этого места все работает
    
    int sumx = 0;
    int a = 0;
    int x = 1;
    int x1 = x;
    for (x; x < n; x++) //здесь я пытаюсь перебрать числа от 1 до 'n'
    { // и посчитать цифр входящих в каждое, кол-во таких цифр записать в 'а'
     // и вывести получившееся 'a'
        while (x1 != 0) 
        {
            sumx += x1 % 10;
            x1 /= 10;            
        }
        if (sumx == sum) {
                 a++;
            }
    }
    cout << a << endl;
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.10.2015, 11:23
Цитата Сообщение от sm_ Посмотреть сообщение
все равно не выходит
Строчку 20 спусти ниже. Под цикл.
1
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 11:44
Байт, спасибо! спустил вот так:
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
30
31
32
33
34
#include <iostream>
using namespace std;
 
int main () 
{
    int n = 0;
    int sum = 0;
    cin >> n;
    int n1 = n;
    while (n1 != 0) 
    {
        sum += n1 % 10;
        n1 /= 10;
    } 
    //cout << sum << " " << n << endl; // до этого места все работает
    
    int sumx = 0;
    int a = 0;
    int x = 1;
    for (x; x < n; x++) //здесь я пытаюсь перебрать числа от 1 до 'n'
    { // и посчитать цифр входящих в каждое, кол-во таких цифр записать в 'а'
     int x1 = x;// и вывести получившееся 'a'
        while (x1 != 0) 
        {
            sumx += x1 % 10;
            x1 /= 10;            
        }
        if (sumx == sum) {
                 a++;
            }
    }
    cout << a << endl;
    return 0;
}
но теперь выдает что 1, а нужно 9
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.10.2015, 11:57
Цитата Сообщение от sm_ Посмотреть сообщение
но теперь
Вот беда! С тобой.
int sumx=0; тоже спусти. Ты ж накапливаешь там сумму цифр всех чисел!
Вообще, повнимательней следи, что же делает твой код. Прокручивай вручную. Пользуйся пошаговой отладкой. Промежуточными выдачами. Иначе будешь на каждый чих стенать - "Ой, что же это?!"
1
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 12:05
Байт, спасибо за терпение, все получилось!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2015, 12:05
Помогаю со студенческими работами здесь

Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27.
Помогите решить ещё одну задачку :) Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число...

Найти все четырехзначные числа,у которых сумма крайних цифр равна сумме средних цифр,а само число делится на 6 и 27
Найти все четырехзначные числа,у которых сумма крайних цифр равна сумме средних цифр,а само число делится на 6 и 27. Программа при запуске...

Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27
найти все четырёхзначные числа , у которых сумма крайних цифр равна сумме средних цифр , а само число делится на 6 и 27 . В С++

Найти все четырехзначные натуральные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится
Найти все четырехзначные натуральные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на число А. ...

Простые типы данных. Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме соседних цифр, а само число делиться на 6 и 27
Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме соседних цифр, а само число делиться на 6 и 27.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru