[华为机试真题][2014]64.实现两个合法时间相加
来源:互联网 发布:seo见效付费 编辑:程序博客网 时间:2024/05/16 10:17
题目
描述:
给定两个合法的时间(格式固定:hh:mm:ss,时间合法,不用考虑其它情况),输入两个时间相加后的结果;注意,相加后的结果也必需是一个合法的时间;附合法时间定义:小时在[00-23]之间,分钟和秒分别是在[00-59]之间;
运行时间限制:
无限制
内存限制:
无限制
输入:
时分秒格式的时间字符串,如00:00:00
输出:
时分秒格式的时间字符串,如00:00:00
样例输入:
00:00:00 00:00:01
样例输出:
00:00:01
答案提示: 建议将时间转换为秒数计算
代码
/*---------------------------------------* 日期:2015-07-06* 作者:SJF0115* 题目:实现两个合法时间相加* 来源:华为机试真题-----------------------------------------*/#include <iostream>#include <string>#include <vector>#include <stack>#include <algorithm>using namespace std;// 整型转换为stringstring Int2Str(int num){ string str = ""; if(num == 0){ str = "0"; return str; }//if while(num){ str.insert(str.begin(),num % 10 + '0'); num /= 10; }//while return str;}// 两个合法时间相加string TimeAdd(string t1,string t2){ int h1 = atoi(t1.substr(0,2).c_str()); int h2 = atoi(t2.substr(0,2).c_str()); int m1 = atoi(t1.substr(3,2).c_str()); int m2 = atoi(t2.substr(3,2).c_str()); int s1 = atoi(t1.substr(6,2).c_str()); int s2 = atoi(t2.substr(6,2).c_str()); int s = (s1 + s2) % 60; int m = (m1 + m2 + (s1 + s2) / 60) % 60; int h = (h1 + h2 + (m1 + m2) / 60) % 24; string str = ""; if(h < 10){ str += "0"; }//if str += Int2Str(h) + ":"; if(m < 10){ str += "0"; }//if str += Int2Str(m) + ":"; if(s < 10){ str += "0"; }//if str += Int2Str(s); return str;}// 方法2string TimeAdd2(string t1,string t2){ int h1 = atoi(t1.substr(0,2).c_str()); int h2 = atoi(t2.substr(0,2).c_str()); int m1 = atoi(t1.substr(3,2).c_str()); int m2 = atoi(t2.substr(3,2).c_str()); int s1 = atoi(t1.substr(6,2).c_str()); int s2 = atoi(t2.substr(6,2).c_str()); int total = h1 * 60 * 60 + m1 * 60 + s1 + h2 * 60 * 60 + m2 * 60 + s2; int s = total % 60; int m = total / 60 % 60; int h = total / 60 / 60 % 24; string str = ""; if(h < 10){ str += "0"; }//if str += Int2Str(h) + ":"; if(m < 10){ str += "0"; }//if str += Int2Str(m) + ":"; if(s < 10){ str += "0"; }//if str += Int2Str(s); return str;}int main(){ string t1,t2; //freopen("C:\\Users\\Administrator\\Desktop\\acm.in","r",stdin); while(cin>>t1>>t2){ cout<<TimeAdd(t1,t2)<<" "<<TimeAdd2(t1,t2)<<endl; }//while return 0;}
1 0
- [华为机试真题][2014]64.实现两个合法时间相加
- 华为OJ:计算两个自然时间相加
- 两个时间相加
- 关于两个时间(00:00:00)相加的实现方法
- 实现两个大数相加
- 实现两个大数相加!
- 华为测试-两个超长整数相加
- 华为上机试题6(时间相加)
- Time 类可以实现调整和重新设置,显示时间,将两个时间相加的功能
- 实现两个数的相加
- 栈实现两个大数相加
- 不用+-实现两个数相加
- 两个大数相加 ----Javascrit 实现
- 用链表实现两个数相加
- C实现两个大数相加
- Matlab实现两个大数相加
- 实现两个超长正整数相加
- JAVA实现两个大数相加
- linux系统下apache服务的启动、停止、重启命令
- Android 开源项目android-open-project解析之(二) GridView,ImageView,ProgressBar,TextView
- Memcache与Redis比较
- 13:在O(1)时间删除单链表节点
- 造随机数的c++代码
- [华为机试真题][2014]64.实现两个合法时间相加
- Linux lvs DR配置
- Linux上的free命令详解
- 斐波那契数列
- 【保存一下】欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- GRE写作必备句型
- ls显示条件的取反结果(bash中条件取非操作)
- [转载]ios 开发 icon图标设置