1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
1

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

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

Здравствуйте! Помогите плиз

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

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

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

пример ввода:
123
пример вывода:
9
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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 2
saymeit, есть какие-нибудь наработки?
0
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
22.10.2015, 00:04  [ТС] 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;
}
1
Диссидент
Эксперт C
26835 / 16743 / 3667
Регистрация: 24.12.2010
Сообщений: 37,480
22.10.2015, 00:16 4
Цитата Сообщение от saymeit Посмотреть сообщение
Уже написал,
Ну что ж. ИМХО, вполне прилично. На работу не проверял, но верю.
Цитата Сообщение от saymeit Посмотреть сообщение
может неоптимально
Есть одна существенная неоптимальность. sumOfDigit(value) повторяется в цикле value раз. И дает, естественно, одно и тоже значение. Может быть логичнее его вычислить до цикла?
0
1 / 1 / 0
Регистрация: 13.09.2010
Сообщений: 34
22.10.2015, 00:29  [ТС] 5
Цитата Сообщение от Байт
Есть одна существенная неоптимальность. sumOfDigit(value) повторяется в цикле value раз. И дает, естественно, одно и тоже значение. Может быть логичнее его вычислить до цикла?
Да, благодарю за совет, так действительно будет лучше!
0
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 03:42 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;
}
0
Диссидент
Эксперт C
26835 / 16743 / 3667
Регистрация: 24.12.2010
Сообщений: 37,480
22.10.2015, 10:54 7
sm_, у тебя цикл по x. А внутри этого цикла ты этот x беспощадно меняешь
1
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 11:11 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;
}
0
Диссидент
Эксперт C
26835 / 16743 / 3667
Регистрация: 24.12.2010
Сообщений: 37,480
22.10.2015, 11:23 9
Цитата Сообщение от sm_ Посмотреть сообщение
все равно не выходит
Строчку 20 спусти ниже. Под цикл.
1
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 11:44 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
0
Диссидент
Эксперт C
26835 / 16743 / 3667
Регистрация: 24.12.2010
Сообщений: 37,480
22.10.2015, 11:57 11
Цитата Сообщение от sm_ Посмотреть сообщение
но теперь
Вот беда! С тобой.
int sumx=0; тоже спусти. Ты ж накапливаешь там сумму цифр всех чисел!
Вообще, повнимательней следи, что же делает твой код. Прокручивай вручную. Пользуйся пошаговой отладкой. Промежуточными выдачами. Иначе будешь на каждый чих стенать - "Ой, что же это?!"
1
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 12
22.10.2015, 12:05 12
Байт, спасибо за терпение, все получилось!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2015, 12:05
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru