UVA 10878 - Decode the tape

看到题目的第一眼我的蛋就疼了...瞬间想起了莫尔斯码╮(╯▽╰)╭

难道ACM还考察密码学的知识....

看了十几分钟找不到头绪,果断看了其他人的结题报告..泥马..把二进制写成这个样子的人也算是个人才了ORZ.

题目挺简单的,但是大部分人都是先把二进制写出来,再转化为十进制输出.忽然,我看到了一个与众不同的写法...

其实略微想一下,Input的格式都是对齐的,所以只需计算1的位权就可以了,而每位的位权都可以写出来.

这样就省去了转化的步骤..


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	int num[] = {0,0,64,32,16,8,0,4,2,1};
	int asc = 0;
	//freopen("input.txt","r",stdin);
	int i = 0;
	char temp[50];
	while (gets(temp))
	{
		asc = 0;
		if (temp[0] != '|')
			continue;
		for (i = 2; i < 11; i++)
		{
			if (temp[i] == 'o')
				asc += num[i];
		}
		printf("%c",asc);
	}
	return 0;			
}


你可能感兴趣的:(ACM,uva,10878)