C++ Задача на оптимизацию кода

Администратор
Администратор
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
2,332
Реакции[?]
1,574
Поинты[?]
72K
Здравствуйте, уважаемые пользователи. Решил я подкинуть вам задачку на креативность.

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

Пример:
Пользователь ввел число 17 (n = 17), нам нужны числа xyz, где x+y+z=n (908, 9+0+8=17). Вывод программы:
17
[-] 109
[-] 119
[-] 129
[-] 139
[-] 149
[-] 159
[-] 169
[+] 179
[+] 188
[+] 197
[-] 209
[-] 219
[-] 229
[-] 239
[-] 249
[-] 259
[+] 269
[+] 278
[+] 287
[+] 296
[-] 309
[-] 319
[-] 329
[-] 339
[-] 349
[+] 359
[+] 368
[+] 377
[+] 386
[+] 395
[-] 409
[-] 419
[-] 429
[-] 439
[+] 449
[+] 458
[+] 467
[+] 476
[+] 485
[+] 494
[-] 509
[-] 519
[-] 529
[+] 539
[+] 548
[+] 557
[+] 566
[+] 575
[+] 584
[+] 593
[-] 609
[-] 619
[+] 629
[+] 638
[+] 647
[+] 656
[+] 665
[+] 674
[+] 683
[+] 692
[-] 709
[+] 719
[+] 728
[+] 737
[+] 746
[+] 755
[+] 764
[+] 773
[+] 782
[+] 791
[+] 809
[+] 818
[+] 827
[+] 836
[+] 845
[+] 854
[+] 863
[+] 872
[+] 881
[+] 890
[+] 908
[+] 917
[+] 926
[+] 935
[+] 944
[+] 953
[+] 962
[+] 971
[+] 980
Iterations: 89
Numbers: 61
// Числа, которые начинаются с «[+]» подходят нам, другие нет.

Мне будет интересно посмотреть на ваши результаты и реализации. Спасибо. Если не трудно, прикладывайте код.
 
Начинающий
Статус
Оффлайн
Регистрация
24 Май 2020
Сообщения
197
Реакции[?]
25
Поинты[?]
0
Представить число в виде массива, получить в цикле каждое число и сложить.
Это первое что пришло в голову.
 
Администратор
Администратор
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
2,332
Реакции[?]
1,574
Поинты[?]
72K
Начинающий
Статус
Оффлайн
Регистрация
24 Май 2020
Сообщения
197
Реакции[?]
25
Поинты[?]
0
Оптимизация при таком подходе будет страдать.
Ну здесь ещё оптимизировано.
Можно же просто брутфорсом умножать рандомные числа и сравнивать в цикле.
Полный перебор во всех смыслах)
 
Администратор
Администратор
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
2,332
Реакции[?]
1,574
Поинты[?]
72K
Ну здесь ещё оптимизировано.
Можно же просто брутфорсом умножать рандомные числа и сравнивать в цикле.
Полный перебор во всех смыслах)
Не понимаю чем оптимизированно, сколько итераций будет выполнено 900, 999?
 
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
Ну здесь ещё оптимизировано.
Можно же просто брутфорсом умножать рандомные числа и сравнивать в цикле.
Полный перебор во всех смыслах)
А рил, при том что ты написал последнее, где оптимизиция? :) (Я надеюсь ты рофланул)
 
Начинающий
Статус
Оффлайн
Регистрация
24 Май 2020
Сообщения
197
Реакции[?]
25
Поинты[?]
0
Администратор
Администратор
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
2,332
Реакции[?]
1,574
Поинты[?]
72K
Арбитр
Продавец
Статус
Оффлайн
Регистрация
13 Июл 2018
Сообщения
1,528
Реакции[?]
1,637
Поинты[?]
280K
1605031780700.png1605031790516.png

Такое тоже никто не отменял, хаахахах :roflanEbalo: :roflanEbalo::roflanEbalo:
( если что просто рофл, не бейте)
Ну а так вроде видел задачу по типу такой
 
Начинающий
Статус
Оффлайн
Регистрация
24 Май 2020
Сообщения
197
Реакции[?]
25
Поинты[?]
0
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
Если Вы про вложенные циклы, то да, имеет.
Честно говоря я что знал немного подзабыл, но ниже приложил примерно то что сделал бы я) (Я не уверен что будет оптимизирован)

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Администратор
Администратор
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
2,332
Реакции[?]
1,574
Поинты[?]
72K
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
Администратор
Администратор
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
2,332
Реакции[?]
1,574
Поинты[?]
72K
Администратор
Администратор
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
2,332
Реакции[?]
1,574
Поинты[?]
72K
Сверху Снизу