Условие задачи
Задача на первый взгляд — очень-очень простая. Но не понятно: как из "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", согласно условию задачи?
Здравствуйте, olimp_20, Вы писали:
_>Условие задачи
_>Задача на первый взгляд — очень-очень простая. Но не понятно: как из "14" получилось "10100"?
_>Ведь "1"-->1, "4"-->100 и ответ, как мне видится должен был быть 1100.
Предлагаю перевести число 1100
2 обратно в шестнадцатеричный вид. Лучше через промежуточный десятичный, чтобы снова в разрядах не запутаться.
Здравствуйте, CaptainFlint, Вы писали:
CF>Предлагаю перевести число 11002 обратно в шестнадцатеричный вид. Лучше через промежуточный десятичный, чтобы снова в разрядах не запутаться.
Проще говоря, все цифры, кроме первой, имеют обязательное 4-битное представление...но все равно спасибо за ответ
_>Условие задачи
_>Задача на первый взгляд — очень-очень простая. Но не понятно: как из "14" получилось "10100"?
_>Ведь "1"-->1, "4"-->100 и ответ, как мне видится должен был быть 1100.
"1"-->0001, "4"-->0100
ответ -> 00010100 -> 10100