Как упростить цикл комбинаторики? - страница 3

 
Dmitry Fedoseev:

Ващеее...

[Удален]  
string tobin(uint n) {return (n/2 != 0 ? tobin(n/2) : "") + IntegerToString(n%2);}
...
for (uint i = 0;  i < 10;  ++ i)  Print(tobin(i));
 
Надо еще учитывать, что двоичное сравнение или двоичные операции выполняются гораздо быстрее, чем операции деления.
[Удален]  
Не верю, что в цикле будет разница между n>>1 и n/2. Может это эхо EC-ЭВМ
 
Vict:
Не верю, что в цикле будет разница между n>>1 и n/2. Может это эхо EC-ЭВМ

А вы проверьте. Там есть и еще n%2.

Проверьте как выполняются операции с двоичными числами, с целыми, а также double.

И еще преобразование их в строку.

Даже сейчас в олимпиадных задачах указывают ограничение памяти, а также время исполнения

[Удален]  
Petros Shatakhtsyan:

А вы проверьте. Там есть и еще n%2.

Проверьте как выполняются операции с двоичными числами, с целыми, а также double.

И еще преобразование их в строку.

Даже сейчас в олимпиадных задачах указывают ограничение памяти, а также время исполнения.

Ну заменить
IntegerToString(n%2)

на 

(n&1 ? "1": "0")

Можно, конечно (но уж точно не из-за остатка от деления). Также незнание move семантики компилятором - не мой косяк.

А теперь посмотрите на свою портянку и на мой лаконичный код, каким хочется пользоваться?

 
Vict:
Ну заменить

на 

Можно, конечно (но уж точно не из-за остатка от деления). Также незнание move семантики компилятором - не мой косяк.

А теперь посмотрите на свою портянку и на мой лаконичный код, каким хочется пользоваться?

При чем тут Move семантика.  

И еще советую не говорить лишние слова.

[Удален]  
Petros Shatakhtsyan:

При чем тут Move семантика.  

И еще советую не говорить лишние слова.

Оставь свои советы при себе, я их не спрашивал.