Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 09.02.2020
Сообщений: 22
1

Среди всех n значных чисел указать те, сумма цифр которых равна данному числу k

15.02.2020, 13:49. Показов 2908. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Среди всех n значных чисел указать те, сумма цифр которых равна данному числу k. (пользователь вводит n и k
Помогите написать программу.
Я не совсем понимаю как на си сделать такой цикл чтобы его промежуток выбирал пользователь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2020, 13:49
Ответы с готовыми решениями:

Среди всех п-значных чисел указать те, сумма цифр которых равна данному числу k
Среди всех п-значных чисел указать те, сумма цифр которых равна данному числу k . То есть...

Среди всех 5-значных чисел указать те, сумма цифр которых равна данному числу k
помогите кто чем может 1. Среди всех 5-значных чисел указать те, сумма цифр которых равна данному...

Среди всех п-значных чисел указать те, сумма цифр которых равна данному числу k .
Здравствуйте, выручайте! Программа, что-то типа этого получается: Private Sub Form_Load() ...

Среди всех n-значных чисел указать те, сумма цифр которых равна данному числу K
среди всех n-значных чисел указать те , сумма цифр которых равна данному числу K.

6
535 / 325 / 169
Регистрация: 21.02.2011
Сообщений: 4,967
15.02.2020, 22:46 2
Лучший ответ Сообщение было отмечено Kaydo как решение

Решение

Цитата Сообщение от Kaydo Посмотреть сообщение
Я не совсем понимаю как на си сделать такой цикл чтобы его промежуток выбирал пользователь.
да ладно?
C
1
for (int i = 0; i < n; i++)
здесь разве не пользователь задает?

учитывая условие задачи, мне только такое решение пришло в голову:
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
#include <stdio.h>
 
int main()
{
    int n, s, k, c;
    printf("n = ");
    scanf("%d",&n);
    printf("k = ");
    scanf("%d",&k);
    for ( int i = 0; i <= n; i++)
    {
    c = i;
    s = 0;
    while (c > 0)  {
        s += c%10;
        c /= 10;
    }
    if (s == k)
    {
            printf("%d", k);
            printf(" = %d\n",i);
    }
    }
    return 0;
}
может это можно сделать и по нормальному без двух циклов
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
15.02.2020, 23:08 3
Лучший ответ Сообщение было отмечено Kaydo как решение

Решение

andreyfreelans,
Цитата Сообщение от Kaydo Посмотреть сообщение
Среди всех n значных чисел
Это числа от 10n-1 до 10n, т.е. как-то так:
C
1
2
3
4
5
6
7
...
int beg = pow(10, n-1);
int end = pow(10, n);
for ( int i = beg; i < end; i++)
{
...
}
0
0 / 0 / 0
Регистрация: 09.02.2020
Сообщений: 22
16.02.2020, 15:25  [ТС] 4
C
1
2
3
4
5
6
7
...
int beg = pow(10, n-1);
int end = pow(10, n)-1;
for ( int i = beg; i < end; i++)
{
...
}
Ещё сделать end-1 так как без этого он будет проверять ещё и одно следующее n+1 значное число а так всё хорошо спасибо!
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
16.02.2020, 15:32 5
Цитата Сообщение от Kaydo Посмотреть сообщение
Ещё сделать end-1 так как без этого он будет проверять ещё и одно следующее n+1 значное число а так всё хорошо спасибо!
Не будет, т.к. в условии строгое неравенство (i < end).
0
0 / 0 / 0
Регистрация: 09.02.2020
Сообщений: 22
16.02.2020, 15:41  [ТС] 6
ой, я глупый и создал сам себе проблемы т.к приписал
C
1
(i <= end)
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
16.02.2020, 18:36 7
Чегой-то мне не нравится решение. Нет, оно конечно, рабочее...
Во-первых, привлекать плавающее pow для решения целочисленной задачи - дурной тон. Но это ерунда. Эти pow легко заменить простым маленьким циклом.
Но если n равно, например, 8 или 9, счет будет довольно долгим... А главное, до обидности бессмысленным. Вот, скажем, k=15. И у нас появилось число 28500000. И мы, прибавляя в цикле по 1, этот цикл будем крутить 500000 раз совершенно впустую. Жалко же, нет? Нельзя ли сразу через эти тысячи (мульены) перескочить?
Сам кода не предлагаю. Но может быть найдутся любители решать действительно интересные задачки?

Добавлено через 6 минут
В самом деле эта задача эквивалентна такой. Найти решения уравнения X1 + ... Xn = k в целых числах, где 9 >= X1 >= 1, 9 >= Xi >= 0 (i>1)
Не знаю, поможет ли этот факт решению...
Но, имхо, можно и не пользуюсь им, организовать разумный перебор...

Добавлено через 39 минут
При k > 9n/2 эффективнее будет применить другую методику определения скачка. А именно, делать скачок тогда, когда даже заполнив все оставшиеся цифры девятками, до суммы k добраться не удастся.
В любом случае наиболее вычислительно трудоемкими будут значения k = 9n/2 (близкие к ним)
0
16.02.2020, 18:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2020, 18:36
Помогаю со студенческими работами здесь

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

Среди всех n-значных чисел указать те, сумма цифр которых равна данному числу k
Среди всех n-значных чисел указать те, сумма цифр которых равна данному числу k. Этот код не...

Среди всех н-значных чисел указать те, сумма цифр которых равна данному числу k
Не знаю как решить ее используя цикл While.

Среди всех n-значных чисел указать те, сумма цифр которых равна данному числу k.
Среди всех n-значных чисел указать те, сумма цифр которых равна данному числу k. Помогите...

Среди всех n-значных чисел указать те, сумма цифр которых равна заданному числу k.
Помогите написать программу. Среди всех n-значных чисел указать те, сумма цифр которых равна...

Среди всех N значных чисел указать те, сумма цифр которых равна заданному числу К
Не могу разобраться.... помогите! Код работает, но я видимо не правильно понимаю условие задание.....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru