http://acm.hit.edu.cn/hoj/problem/view?id=2989
http://acm.hit.edu.cn/hoj/problem/view?id=3015
二进制转换
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
int k, i, j, d;
int bin[32] = {0};
char str[4];
while (scanf("%d",&k) != EOF)
{
getchar();
for (i = 0; i < k; i++)
{
gets(str);
if( strcmp(str, "- -") == 0 )
bin[i] = 1;
else
bin[i] = 0;
}
d = 0;
for (j = k-1; j >= 0; j--)
d += bin[j] * pow(2, k-1-j);
printf("%d\n", d);
}
return 0;
}
http://acm.hit.edu.cn/hoj/problem/view?id=3015
#include<stdio.h>
int main()
{
int n, k, i, j;
int tbin[24], bin[24];
while (scanf("%d %d", &n, &k) != EOF)
{
if ( (n == 0) && (k == 0)
break;
for (i = 0; i < 24; i++)
{
tbin[i] = n % 2;
n = n / 2;
}
for (i = 0; i < 24; i++)
{
bin[i] = tbin[23-i];
}
for (j = 24 - k; j < 24; j++)
{
if (bin[j] == 0)
printf("---\n");
else
printf("- -\n");
}
printf("\n");
}
return 0;
}