Условие задачи
Задача на первый взгляд — очень-очень простая. Но не понятно: как из "14" получилось "10100"?
Ведь "1"-->1, "4"-->100 и ответ, как мне видится должен был быть 1100.
| Код — проходит приблизительно половину тестов |
| #include <stdio.h>
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
char ch;
int x;
while(scanf("%c", &ch)!=-1 && ch!='\n'){//посимвольное чтение
if('0'<=ch && ch<='9') x = ch - '0';//конвертация символа в число
else x = ch - 'A' + 10;
//анализ чисел для перевода в двоичное представление
if(x<2) {printf("%d", x); continue;}
if(x<4) {
for(int i=1; i>=0; --i)
printf("%d", (x>>i)%2 );
continue;
}
if(x<8) {
for(int i=2; i>=0; --i)
printf("%d", (x>>i)%2 );
continue;
}
for(int i=3; i>=0; --i)//для чисел от 8 до F
printf("%d", (x>>i)%2 );
}
printf("\n");
return 0;
}
|
| |
Пожалуйста, подскажите: как "14" переводится в "10100", согласно условию задачи?