博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HNUSTOJ-1600 BCD时钟
阅读量:5817 次
发布时间:2019-06-18

本文共 1795 字,大约阅读时间需要 5 分钟。

1600: BCD时钟

时间限制: 1 Sec  内存限制: 128 MB
提交: 1038  解决: 156
[][][]

题目描述

 BCD码是指用四位二进制数来表示十进制数中的0~9这十个数字的编码形式,常见的是8421码表如下:

十进制  二进制 

0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

 

 
 
现在我们用BCD码表示一个时钟.时钟由13个LED灯组成(见图), 灯1和2表示小时的第一个数字,灯3-6表示小时的第二个数字.灯7-9表示分钟的第一个数字,灯10-13表示分钟的第二个数字.注意,小时的第一个数字和分钟的第一个数字并没有用足四位二进制是因为已经足够表达相关信息了,详见样例.
时钟是24小时制的,规定从00:00到24:00, 24:00和0:00均为正确时刻.
例如: 灯1,3,7,10和12亮表示时刻11:15, 因为灯1亮表示小时的第一个数字是1,灯3亮表示小时的第二个数字也是1.灯7亮表示分钟的第一个数字是1,灯10和12亮表示分钟的第二个数字是1+4=5.
 
我们问题是,给定时钟的BCD时刻, 求出对应的十进制时刻.

 

输入

 由多组测试数据组成.每组数据一行,包括一个0和1组成的,长度为13的字符串,从左至右对应灯1-13. 1表示灯亮,0表示灯熄灭.

输出

 每组测试数据输出一行.如果数据有误,输出"Error", 否则输出对应时刻.见样例.

样例输入

0111001011001100000000000010000000000100100001000100001000001001011000110000111111111111111001100010010010100000001101010000000100

样例输出

23:5910:0010:0420:1201:44ErrorError03:2211:0611:02 直接按照题意模拟就行了,要注意的是24:00是合法的,但是24:01是不合法的,因为这个WA了一次
#include
#include
#include
using namespace std;#define lx( c ) ((c)-('0'))char ch[25]; void tran(int &a, int &b, int &c, int &d){ a = lx(ch[0]) + lx(ch[1])*2; b = lx(ch[2]) + lx(ch[3])*2 + lx(ch[4])*4 + lx(ch[5])*8; c = lx(ch[6]) + lx(ch[7])*2 + lx(ch[8])*4; d = lx(ch[9]) + lx(ch[10])*2 + lx(ch[11])*4 + lx(ch[12])*8;} void Solve_question(){ int a, b, c, d; tran(a, b, c, d); bool flag = true; if(a*10 + b > 24 || c * 10 + d > 59) flag = false; if(a > 3 || b > 9 || c > 5 || d > 9) flag = false; if(a*10 + b == 24 && c*10 + d > 0) flag = false; if( !flag ) printf("Error\n"); else printf("%d%d:%d%d\n", a, b, c, d);}int main(){ while(scanf("%s", ch) == 1){ int len = strlen(ch); if(len != 13) { printf("Error\n"); continue; } Solve_question(); }}

 

转载于:https://www.cnblogs.com/Pretty9/p/7406592.html

你可能感兴趣的文章
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
论模式在领域驱动设计中的重要性
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
有关GitHub仓库分支的几个问题
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
linux软件包管理之三(源代码安装)
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
Apache配置
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
Linux 目录结构及内容详解
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
My97DatePicker 日历插件
查看>>