#include <iostream>
int main()
{
uint16_t x, b;
uint16_t count = 0;
uint16_t y = 0;
std::cin >> x;
std::cin >> numeric_system_base;
while ( x != 0 )
{
b = x % numeric_system_base;
y = y * 10 + b;
if ( 1 == x % numeric_system_base )
count++;
x = x / numeric_system_base;
}
return 0;
}
y
переполняется. Вы записываете двоичную запись десятичными цифрами. в uint16_t помещаются число до 65535. Соответственно, если вы постараетесь 100000 туда записать, оно переполнится. Т.е. ваша программа не работает при x>=32.