выведет все числа троичной системы заданной длины? Мне нужна длина 10, т.е. такой список
0000000000
0000000001
0000000002
0000000010
0000000011
...
0000000022
...
2222222222
первое что приходит на ум просто плюсовать два раза единицу, а затем восьмерку
а, стоп, там после 22 идет 100
Цикл, где ты будешь преобразовывать обычное число в троичную систему, приводить к строке и смотреть не превышает-ли оно заданную длину.
#include <iostream> #include <string> void generateTernaryNumbers(int length, std::string current = "") { if (length == 0) { std::cout << current << std::endl; } else { for (char digit = '0'; digit <= '2'; ++digit) { generateTernaryNumbers(length - 1, current + digit); } } } int main() { int n; std::cin >> n; generateTernaryNumbers(n); return 0; }
а как до этого додумались?)
Проще всего - 10 вложенных цикла, по каждому из 10 разрядов, каждый перебирает цифры в своём разряде числа, от 0 до 2, в теле самого вложенного цикла выводишь число, склеивая все разряды
Можно использовать Itoa с radix=3
Обсуждают сегодня