UVA-10878 Decode the tape
题目大意:将题目中加密后的字符解密
Sample Input
自己点击链接查看
Sample Output
A quick brown fox jumps over the lazy dog.
解题思路:将题目中的信息转化为二进制信息,依次输出即可
方法一
//UVa 10878 - Decode the tape
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int value[11] = {0,0,64,32,16,8,0,4,2,1,0};
int main()
{
char buf[12];
gets(buf);
while ( gets(buf) && buf[0] != '_' ) {
int sum = 0;
for ( int i = 2 ; i < 10 ; ++ i )
if ( buf[i] == 'o' )
sum += value[i];
printf("%c",sum); //此处不用回车
}
return 0;
}
方法二
#include <cstdio>
int main () {
char c;
int temp = 0;
int num = 0;
while ((c = getchar())!=EOF) {
if (c == '\n') {
if (num == 8) {
putchar (temp);
num = 0;
}
temp = 0;
}
else {
if (c == 'o') {
temp = temp * 2 + 1;
num++;
}
if (c == ' ') {
temp *=2;
num++;
}
}
}
return 0;
}