while (true) { X[0]++; for (int i = 1; i < N; i++) { X[i] += X[i - 1] / K; X[i - 1] %= K; } if (X[N - 1] / K > 1) { break; } // do something }
p.s. Для K являющегося степенью двойки код можно оптимизировать, заменив операции деления и получения остатка от деления на побитовое ИЛИ и побитовое И.
для чего это все, как дальше будет использоваться?
000,001,010,011,100,101,110,111 это тоже что и 0, 1, 2, 3, 4, 5, 6, 7
может побитовыми операция все можно спростить?
Перевод числа в систему счисления с другим основанием. Длина числа известна, основание тоже, можно найти максимальное число. Далее цикл от нуля до максимума и перевод в систему с другим основанием.
Благодарю.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может кто подскажет обобщеный алгоритм или код для поиска сочетаний с повторениями.
Как пример: дано 0,1, найти все их тройные сочетания, 000,001,010,011,100,101,110,111.
Типа такого (как для примера):
Но сложность у меня в том, что если надо из 0,1 найти четверные сочетания, то в вышеприведенный алгоритм надо добавлять еще один цикл. А я хочу реализовать это в виде функции для поиска любых сочетаний и ума не приложу как.