C/C++

Помогите решить задание по с++

Составить программу поиска всех
а) таких чисел;

б) «особых» чисел такого рода, у которых цифры следуют строго в порядке возрастания.

Например, число 12896: 12*8=96 обладает указанным свойством, но не является «особым», так как последовательность 1, 2, 8, 9, 6 не является возрастающей.
а)
 #include  
#include
using namespace std;

void main()
{
for (int i = 10; i < 100; i++)
{
for (int j = 0; j < 10; j++)
{
int k = i * j;
if (k < 100)
{
if (k < 10) cout
Мтс Ардатов
Мтс Ардатов
1 091
Лучший ответ
 for i in range(10, 51):
for j in range(2, 99 // i + 1):
n = i * 1000 + j * 100 + i * j
if len(set(str(n))) == 5: print(n)
Средняя цифра не может быть меньше 2, т.к. это гарантирует повтор цифр и не может быть больше 99 // k, где k - число, образованное первыми двумя цифрами.

Для второго задания придётся изменить схему проверок:
 for i in range(1, 5):
for j in range(i + 1, 7):
for k in range(j + 1, max(8, 99 // (10 * i + j) + 1)):
t = (10 * i + j) * k
if k < t // 10 < t % 10: print(i, j, k, t, sep='')
Это если ты хочешь искать числа эффективно.

Но если тупо в лоб, то всё намного проще:
 for i in range(10000, 100000):
s = str(i)
if len(set(s)) != 5: continue
if i // 1000 * (i // 100 % 10) == i % 100: print(i)
 for i in range(10000, 100000):
s = str(i)
if len(set(s)) != 5 or not (s[0] < s[1] < s[2] < s[3] < s[4]): continue
if i // 1000 * (i // 100 % 10) == i % 100: print(i)
TA
Timur Aktyubinsk)
55 017
Вячеслав Титов Большое спасибо