Я бы предложил использовать функцию log2 из заголовочного файла cmath. Вы можете посчитать количество битов, которое вам потребуется для представления целого числа в двоичном формате. Таким образом, вам не понадобится время l oop, используемое для подсчета количества ведущих нулей.
Вот код:
#include <iostream>
#include <bitset>
#include <string>
#include <cmath>
int main()
{
int T;
std:: cin >> T;
while(T--) {
int n;
std:: cin >> n;
for(auto i = 1; i <= n; ++i) {
std::string binary = std::bitset<32>(i).to_string(); //to binary
int len = log2(i)+1;
binary.erase(0,32-len);
std::cout<<binary<<"\n";
}
std:: cout << std:: endl;
}
return 0;
}
Как указано john в разделе комментариев не обязательно удалять количество ведущих нулей. Для этого вы можете сделать это,
std::cout<<binary.substr(32-len,len)<<"\n";