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", 否则输出对应时刻.见样例.

样例输入

0111001011001
1000000000000
1000000000010
0100001000100
0010000010010
1100011000011
1111111111111
0011000100100
1010000000110
1010000000100

样例输出

23:59
10:00
10:04
20:12
01:44
Error
Error
03:22
11:06
11:02
直接按照题意模拟就行了,要注意的是24:00是合法的,但是24:01是不合法的,因为这个WA了一次
#include<iostream>
#include<cstring>
#include<cstdio> using namespace std;
#define lx( c ) ((c)-('0'))
char ch[]; void tran(int &a, int &b, int &c, int &d){
a = lx(ch[]) + lx(ch[])*;
b = lx(ch[]) + lx(ch[])* + lx(ch[])* + lx(ch[])*;
c = lx(ch[]) + lx(ch[])* + lx(ch[])*;
d = lx(ch[]) + lx(ch[])* + lx(ch[])* + lx(ch[])*;
} void Solve_question(){
int a, b, c, d;
tran(a, b, c, d);
bool flag = true;
if(a* + b > || c * + d > ) flag = false;
if(a > || b > || c > || d > ) flag = false;
if(a* + b == && c* + d > ) flag = false;
if( !flag ) printf("Error\n");
else printf("%d%d:%d%d\n", a, b, c, d);
}
int main(){
while(scanf("%s", ch) == ){
int len = strlen(ch);
if(len != ) { printf("Error\n"); continue; }
Solve_question();
}
}

HNUSTOJ-1600 BCD时钟的更多相关文章

  1. RTC实时时钟

    作者:宋老师,华清远见嵌入式学院讲师. 1.1 RTC介绍 在 一个嵌入式系统中,通常采用RTC 来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能够正常工作(通常采用后备 ...

  2. 【ARM】2440裸机系列-RTC数字时钟

    功能 裸机程序,实现LCD显示数字时钟 主要代码   1)背景绘制 void Brush_ U32 c) { int x,y ; for ( y = 0 ; y < LCD_HEIGHT ; y ...

  3. S3C2440的RTC解析

    位二-十进制交换码(BCD)值数据给CPU.这些数据包括年.月.日.星期.时.分和秒的时间信息.RTC单元工作在外部32.768kHz晶振并且可以执行闹钟功能 实时时钟模块保存的数据是DCD码形式. ...

  4. VGA调试心得

    以前自己调试过视频信号,无非就时钟加行场同步加数据线,如果视频信号出问题,第一看现象,第二测频率,反正出问题不是消隐信号出问题,就是时钟频率出问题.通过这种方式也调试成功过几个显示屏,然后就以为自己对 ...

  5. 13. 从0学ARM-Cortex-A9 RTC裸机程序编写

    一.RTC RTC(Real-Time Clock) 实时时钟. RTC是集成电路,通常称为时钟芯片.在一个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关 ...

  6. Maxim实时时钟芯片设计指南5413-二进制编码十进制(BCD)格式实时时钟中的状态机逻辑

    网上DS12C887的文章涉及到时间的存储格式使用的都是二进制代码,究竟使用BCD码该如何操作?正好美信官网上有一篇文章.美信官网不稳定,先贴到这里,有时间再翻译. 原文链接 State Machin ...

  7. ASM:《X86汇编语言-从实模式到保护模式》第9章:实模式下中断机制和实时时钟

    中断是处理器一个非常重要的工作机制.第9章是讲中断在实模式下如何工作,第17章是讲中断在保护模式下如何工作. ★PART1:外部硬件中断 外部硬件中断是通过两个信号线引入处理器内部的,这两条线分别叫N ...

  8. S3C2440上RTC时钟驱动开发实例讲解(转载)

    嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤.一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便.如有错误之处,谢请指正. 共享资源,欢迎转载:http:/ ...

  9. DS1337 时钟芯片在 C8051F 上的实现

    一.DS1337介绍 DS1337串行实时时钟芯片是一种低功耗.全部采用BCD码的时钟日历芯片,它带有两个可编程的定时闹钟和一个可编程的方波输出.其地址和数据可通过I2C总线串行传输,能提供秒.分.时 ...

随机推荐

  1. Oracle 9i,10g,11g各自alert日志的位置

    10g&9i的alert日志: 进入oracle:[zhangshengdong@oralocal1 ~]$ sudo su - oracle[oracle@oralocal1 ~]$ sql ...

  2. Python---进阶---logging---装饰器打印日志

    #### logging - logging.debug - logging.info - logging.warning - logging.error - logging.critical --- ...

  3. Codeforces Round #596 Div1 A~E题解

    我好菜啊 A 题意: 定义p-二进制数为2^k-p,给出n和p,求用最小个数的p-二进制数来表示n 1<=n<=10^9,-1000<=p<=1000 题解: 猜结论,答案不会 ...

  4. JavaScript算数运算符和一元运算符

    算数运算符 加法运算符(Addition): x + y 减法运算符(Subtraction): x - y 乘法运算符(Multiplication): x * y 除法运算符(Division): ...

  5. mybatis配eclise模板,mybatis快速生成模板

    eclipse中mybatis得mapper文件不提示(mybatis-3-mapper.dtd,mybatis-3-config.dtd) 1.下载该文件到你的硬盘文件夹下 2.windows -- ...

  6. linux文件系统的类型

    文件系统的类型 兄弟连介绍-Linux有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码.SHELL脚本.二进制的可执行文件等 ...

  7. vue路由传参并跳转页面

    在vue项目中参数的传递可以使用本地缓存或者Vuex,那么vue能不能像小程序一样路由传参呢,显然是可以的而且非常简单 方式一:query传参 //传参 go(){ that.$router.push ...

  8. Git 使用的问题总结

    1.git stash pop 显示 xxx already exists, no checkout 当我们先使用 git stash save -u '保存信息说明' 来储藏更改,然后拉取代码 gi ...

  9. 【rust】rust安装,运行第一个Rust 程序 (1)

    安装 Rust 在 Unix 类系统如 Linux 和 macOS 上,打开终端并输入: curl https://sh.rustup.rs -sSf | sh 回车后安装过程出现如下显示: info ...

  10. PHP文件的上传和下载

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...