As spune ca problema e timpul. Cand faci acele operatii de impartire. Modulul ia foarte multtt timp pe anumite arhitecturi. Iti sugerez ca in loc de modul sa incerci altceva(doar ca test..ar putea fi chiar mai incet): mod=A – B * (int)(A / B). Adica A/B trebuie sa rotunjesti si apoi sa-l inmultesti cu B.
Daca nu merge nici asa incearca libaria bitset. Problema iti spune ca numerele sunt pana la 2*10^9 deci in binar ai avea nevoie de 31 de spatii(2*10^9 in binar e 1110111001101011001010000000000).
Si folosesti codul:
string nr_in_binar=bitset<31>(nr);