UVA 10878 - Decode the tape

本文介绍了一种ACM竞赛中二进制到十进制转换题目的简化解法,通过预先计算位权并直接查找的方式避免了复杂的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

难道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;			
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值