C/C++

Написать программу на любом языке

Задача: число должно пройти определённое количество действий, чтобы снова стать собой.
Входные данные: число, множитель, количество шагов.
Разрешенные действия: умножать на множитель, убирать любую цифру в числе.

Пример: 9, 2, 8
Результат: 9 18 36 6 12 24 48 96 9

Пример: 2, 3, 5
Результат: 2 6 18 8 24 2

Нужно написать программу, которая будет выполнять данные действия. Что она выдаст при следующих запросах:
1) 26, 2, 9
2) 46, 2, 7
 def f(t, m, n): 
if len(t) == n + 1:
if t[0] == t[-1]: print(*t); exit()
else: return
f(t + [t[-1] * m], m, n)
if t[-1] < 10: return
s = str(t[-1])
for v in {s[:i] + s[i + 1:] for i in range(len(s))}: f(t + [int(v)], m, n)

a, b, c = map(int, input().split())
f([a], b, c)
print('Ответа не существует')
ЮК
Юра Карабельников
67 157
Лучший ответ
Дима Гузенко Красиво удаляется циферка, я грязновато написал, надо было тоже через Take делать, или через отдельный метод с помощью деления на степень 10-ки. Но у меня тоже работает :)
Абы помогло:

internal class Program

{



static bool Iterate(int num, int mul, int step, List<int> list)

{

list.Add(num);

if (step == 0)

{

if (num == list[0])

{

foreach (int i in list)

Console.Write($"{i} ");

return true;

}

list.RemoveAt(list.Count - 1);

return false;

}

if (Iterate(num * mul, mul, step - 1, list))

return true;

List<char> Digits = num.ToString().ToCharArray().ToList();

if (Digits.Count > 1)

for (int i = 0; i < Digits.Count; i++)

{

List<char> CurrentDigits = Digits.Select (x => x).ToList();

CurrentDigits.RemoveAt(i);

int CurNum = int.Parse(new string(CurrentDigits.ToArray()));

if (Iterate(CurNum, mul, step - 1, list))

return true;

}

list.RemoveAt(list.Count - 1);

return false;

}



static void Main(string[] args)

{

int num = int.Parse(Console.ReadLine());

int mul = int.Parse(Console.ReadLine());

int steps = int.Parse(Console.ReadLine());

List<int> list = new List<int>();

if (!Iterate(num, mul, steps, list))

Console.WriteLine("Transformation with specified number of steps is impossible");

Console.ReadLine();

}

}
Дима Гузенко
Дима Гузенко
51 419
Напиши программу телепередач на албанском
Vanya Shapovalov
Vanya Shapovalov
53 017
напиши конечно
Дмитрий Сырцев
Дмитрий Сырцев
58 499