Time Limit: 3000MS | Memory Limit: Unknown | 64bit IO Format: %lld & %llu |
Description
Input
The input will contain one tape.
Output
Sample Input
___________ | o . o| | o . | | ooo . o| | ooo .o o| | oo o. o| | oo . oo| | oo o. oo| | o . | | oo . o | | ooo . o | | oo o.ooo| | ooo .ooo| | oo o.oo | | o . | | oo .oo | | oo o.ooo| | oooo. | | o . | | oo o. o | | ooo .o o| | oo o.o o| | ooo . | | ooo . oo| | o . | | oo o.ooo| | ooo .oo | | oo .o o| | ooo . o | | o . | | ooo .o | | oo o. | | oo .o o| | o . | | oo o.o | | oo . o| | oooo. o | | oooo. o| | o . | | oo .o | | oo o.ooo| | oo .ooo| | o o.oo | | o. o | ___________
Sample Output
A quick brown fox jumps over the lazy dog.
分析:
题目看似复杂,其实本身很好理解。把' '看成0,‘o’看成1。就是二进制的ascii码。
但是,千万不要用数组储存输入,会超时。解决方法就是用getchar()一个一个读取,读满8个就putchar()出来。
还有,不能仅用换行符当作输出的判断条件。不然读到第一行和最后一行的时候会输出空字符'\0'。尤其在terminal下,空字符被隐藏起来了。在windows上的命令符貌似是一个空格。oj系统是可以识别出来的。
代码: #include<stdio.h>
int main()
{
char c;
int bin=0,i=0;
while((c=getchar())!=EOF)
{
if(c=='\n')
{
if(i==8)
{
putchar(bin);
i=0;
}
bin=0;
}
else
{
if(c==' ')
{
bin=bin*2;
i++;
}
else if(c=='o')
{
bin=bin*2+1;
i++;
}
}
}
return 0;
}