uva 10878 - Decode the tape

题解:

  观察a,b,c,d..字母后发现:

  • a=|_oo__.__o|
  • b=|_oo__._o_|
  • c=|_oo__._oo|
  • d=|_oo__.o__|
  • e=|_oo__.o_o|
  可以知道它是以二进位的方式表示,在把'a'的值(2^0+2^5+2^6=97)加起來后与ASCII表比较,刚好就是表上'a'的值,因此这题把每个字元的值加起來输出即可(换行符号它也已经在input里啰,不用自己换行)。
 
 1 #include <cstdio>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     char line[50];
 7     while(gets(line))
 8     {
 9         if(line[0] != '|') continue;
10         char c = 0;
11         for (int i = 0; line[i]; i++)
12         {
13             if(line[i] == ' ' || line[i] == 'o')
14                 c <<= 1;
15             if(line[i] == 'o')
16                 c ++;
17         }
18         printf("%c", c);
19     }
20     return 0;
21 }

 

posted @ 2016-01-19 00:21  小小泽  阅读(122)  评论(0编辑  收藏  举报