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

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

Восстановить пароль Регистрация
 
saymeit
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
18.10.2015, 11:16     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #1
Здравствуйте! Помогите плиз

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

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

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

пример ввода:
123
пример вывода:
9
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2015, 11:16     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n
Посмотрите здесь:

C++ Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1 до k)
C++ Найти все трехзначные числа, такие, что сумма цифр равна А, а само число делиться на B
C++ Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части
C++ составить линейную программу (сумма двух первых цифр заданного четырёхзначного числа равна сумме двух его последних цифр)
Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sm_
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
20.10.2015, 13:11     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #2
saymeit, есть какие-нибудь наработки?
saymeit
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
22.10.2015, 00:04  [ТС]     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #3
Уже написал, может неоптимально конечно, но работает:
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;
}
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
22.10.2015, 00:16     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #4
Цитата Сообщение от saymeit Посмотреть сообщение
Уже написал,
Ну что ж. ИМХО, вполне прилично. На работу не проверял, но верю.
Цитата Сообщение от saymeit Посмотреть сообщение
может неоптимально
Есть одна существенная неоптимальность. sumOfDigit(value) повторяется в цикле value раз. И дает, естественно, одно и тоже значение. Может быть логичнее его вычислить до цикла?
saymeit
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
22.10.2015, 00:29  [ТС]     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #5
Цитата Сообщение от Байт
Есть одна существенная неоптимальность. sumOfDigit(value) повторяется в цикле value раз. И дает, естественно, одно и тоже значение. Может быть логичнее его вычислить до цикла?
Да, благодарю за совет, так действительно будет лучше!
sm_
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 03:42     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #6
в моем коде работает только та часть которая, считает сумму цифр в 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;
}
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
22.10.2015, 10:54     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #7
sm_, у тебя цикл по x. А внутри этого цикла ты этот x беспощадно меняешь
sm_
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 11:11     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #8
Байт, исправил, но все равно не выходит - для числа 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;
}
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
22.10.2015, 11:23     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #9
Цитата Сообщение от sm_ Посмотреть сообщение
все равно не выходит
Строчку 20 спусти ниже. Под цикл.
sm_
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 11:44     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #10
Байт, спасибо! спустил вот так:
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
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
22.10.2015, 11:57     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #11
Цитата Сообщение от sm_ Посмотреть сообщение
но теперь
Вот беда! С тобой.
int sumx=0; тоже спусти. Ты ж накапливаешь там сумму цифр всех чисел!
Вообще, повнимательней следи, что же делает твой код. Прокручивай вручную. Пользуйся пошаговой отладкой. Промежуточными выдачами. Иначе будешь на каждый чих стенать - "Ой, что же это?!"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2015, 12:05     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n
Еще ссылки по теме:

C++ Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр)
C++ Вывести на экран все шестизначные числа, сумма цифр которых равна N и сообщить количество таких чисел
Написать программу: сумма первых трех цифр числа равна сумме его последних трех цифр. C++

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

Или воспользуйтесь поиском по форуму:
sm_
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 12:05     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n #12
Байт, спасибо за терпение, все получилось!
Yandex
Объявления
22.10.2015, 12:05     Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n
Ответ Создать тему
Опции темы

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