Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

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

01.05.2017, 16:04. Показов 6530. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые знатоки. Мне снова нужна помощь по оптимизации решения. Со сложностью алгоритмов у меня, к сожалению, большие проблемы. Было бы вообще здорово создать такую рубрику Вот ссылка на задачу:del и мое решение:

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>
#include <cmath>
 
using namespace std;
 
int Sum(int N)
{
    int sum;
    sum = 0;
    while (N > 0)
    {
        sum += N % 10;
        N /= 10;
    }
    return sum;
}
 
int main()
{
    int N, M, k;
    cin >> N >> M;
    k = 0;
    for (int i = pow(10, N - 1); i < pow(10, N); i++)
    {
        if (Sum(i) == M)
            k++;
    }
    cout << k << endl;
    system("pause");
    return 0;
}
Только 30% по причине истекшего времени. Чувствую, что дело в pow(), но что делать...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2017, 16:04
Ответы с готовыми решениями:

Найти количество N-значных чисел, у которых сумма цифр равна их произведению (оптимизировать код)
Здравствуйте! Снова приходится просить помощи уважаемых знатоков. Сам в оптимизации не силен. В этой задаче 2 теста из 10 не прошли по...

Определить количество М-значных натуральных чисел, у которых сумма цифр, стоящих в нечетных разрядах, равна N
Определить количество М-значных натуральных чисел, у которых сумма цифр, стоящих в нечетных разрядах, равна N (1&lt;N&lt; 30,...

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

12
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
01.05.2017, 16:16
Цитата Сообщение от Fixer_84 Посмотреть сообщение
pow(10, N - 1);
Задача была бы слишком неинтересной если б можно было так легко ее в лоб решить. Стандартные типы не могут хранить такие большие числа(N ведь может быть до 100 по условию). Конечно можно использовать длинную арифметику, но очевидно что это глупо и такое решение будет неэффективно. Мне кажется тут нужно использовать динамическое программирование, но решения пока к сожалению не вижу.

Добавлено через 4 минуты
Ну вообще если так подумать, то кажется очень простенькая динамика. Писать я ее конечно же не буду.
P.S Просто оптимизировать ваш код не выйдет, тут нужно кардинально менять подход к решению задачи.
Вы с динамическим программированием знакомы?
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
01.05.2017, 16:36
Fixer_84, С числом M все понятно, а с N что делать? Как я понял диапазон в примере от 10 до 100. А при N=3 буде от 100 до 1000 ?
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
01.05.2017, 16:50  [ТС]
Вот условие задачи:

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

Входные данные:

В единственной строке входного файла записаны значения N и M. (1 ≤ N ≤100, 1 ≤ M ≤ 900).

Выходные данные:

Вывести найденное количество чисел.

У меня тут с десяток таких накопилось...Все по времени не проходят. Хотел дорешать.

Добавлено через 4 минуты

Добавлено через 4 минуты
Новичок, тогда посмотрите, пожалуйста, еще одну задачу. Там точно оптимизировать можно. Выложу в следующем сообщении...
0
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
01.05.2017, 16:51
Длинная арифметика? Если так то тема не новинка, решал такие задачки. Щас попробую для этой написать код
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
01.05.2017, 16:53
Да какая длинная арифметика? Вы понимаете что перебирать все 100-значные числа это очень долго? Их около 10^100... По времени не пройдет(да такое решение вообще будет годами работать )... Это не тот сайт на котором будут давать задачи где можно тупо в лоб делать то что говорят в условии.
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
01.05.2017, 17:18
Цитата Сообщение от no swear Посмотреть сообщение
Длинная арифметика?
Я думаю что здесь нет никакой длинной арифметики (давайте еще и параллельные вычисления пришьем). Нужно просто оптимизировать алгоритм.

Добавлено через 23 минуты
Допустим как я искал бы числа у которых сумма цифр 4 от 10 до 1000
Находим первое
13 (увеличиваем десяток на 1, единицы уменьшаем на 1)
22
31
40 (до сотни нет смысла искать. начинаем с 100 ищем первое)
103
112
121
130 (все до следующей сотни 200)
202
211
220 (все до следующей сотни 300)
301
310 (все до следующей 400)
400 (все приехали дальше ничего нет)
Опять же необходим алгоритм нахождения первого числа что бы отбросить ненужные вычисления.
Наверное как то так.
0
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
01.05.2017, 19:53
Цитата Сообщение от Fixer_84 Посмотреть сообщение
В единственной строке входного файла записаны значения N и M. (1 ≤ N ≤100, 1 ≤ M ≤ 900).
N может принимать значения до 100. 100 - значное число ни в какой тип не влезет не говоря уже о их переборе.
Fixer_84, Можно узнать имя задачки чтобы самому посмотреть на неё
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
01.05.2017, 20:24
no swear, все как пост 4, ничего нового.
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
01.05.2017, 21:27
мановар, no swear, да вон в соседней теме я уже этому товарищу помог решить,
через длинную арифметику легче всего решаица
Найти уровень палиндромности числа m.
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
01.05.2017, 21:48
Ferrari F1, да видел, но решение только впритык, в таких задачах думаю дело прежде всего в алгоритме.
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
02.05.2017, 02:24
Надо перестать считать сумму цифр, как только sum>=M

еще я бы ватащил pow(10, N) из цикла:
C++
1
2
3
int up = pow(10, N);
for (int i = pow(10, N - 1); i < up; i++)
    {
0
354 / 135 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
02.05.2017, 23:12
Лучший ответ Сообщение было отмечено Новичок как решение

Решение

О мой Бог.
Цитата Сообщение от oldnewyear Посмотреть сообщение
pow(10, N);
Это сколько? Бинго. 10^n. n до 100. Спорим, в int не вместится? Да и в ll тоже. Даже в ull.
Прекрасно. А когда все это поняли давай обсудим настоящее решение.
1. Перебор не зайдет. Потому есть ограничение по времени.
Когда пункт 1 становится ясным - можно продолжать двигаться в правильном направлении, которое уже указал Новичок.
Это дп.
Например, такое
C++
1
2
3
4
5
6
7
8
9
10
ll f(ll n, ll m) {
    if (n == 0) return (m == 0);
    if (n == 1) return (m > 0 && m < 10);
    if (m < 0) return 0;
    if (v[n][m] != -1) return v[n][m];
    ll ans = 0;
    forn(i, 10) ans += f(n-1, m-i);
    v[n][m] = ans;
    return v[n][m];
}
Теперь самое интересное.
Давайте возьмем максимальное N = 100. А M - это (0+1+2+..+9)*10.
Сколько чисел нам подходят? Как минимум, все (не все, но тоже пофиг) перестановки 0(10раз)1(10раз)2(10раз)..9(10раз)
Сколько их будет? 100!/(10!)^10. Посчитаем это где-нить и поймем, что снова никуда не влезет.
Вывод?
Да. Тут будет длинная арифметика. Но не для перебора, а для получения четкого ответа.
Ее мне лень писать.
Конец.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2017, 23:12
Помогаю со студенческими работами здесь

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

Задача на рекурсию. Сколько существует k-значных натуральных чисел, сумма цифр которых равна s
Задание (нужно выполнять рекурсией): Даны натуральные числа k и s. Определите, сколько существует k-значных натуральных чисел, сумма...

Даны натуральные числа k и s. Определите, сколько существует k-значных натуральных чисел, сумма цифр которых равна d.
Даны натуральные числа k и s. Определите, сколько существует k-значных натуральных чисел, сумма цифр которых равна d. Запись натурального...

Найти количество N-разрядных натуральных чисел, у которых сумма цифр делится на K
Условие задачи: Определите количество N-разрядных натуральных чисел, у которых сумма цифр делится на K. Входные данные: числа N и...

Определить количество 8-значных чисел, у которых сумма цифр...
Дано натуральное число N. Определить количество 8-значных чисел, у которых сумма цифр в цифровой записи числа была меньше, чем N. Если...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки 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. На борту пять. . .
Камера 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