下一个生日要多久
来源:互联网 发布:三星电视看网络电视 编辑:程序博客网 时间:2024/05/19 03:16
今天做到了Tyvj的初学者题库Q1077:http://www.tyvj.cn/Open_Problem_Show.aspx?id=1077
描述 Description
对小孩子来说,,生日算是最欢乐的一件事了..……
告诉你现在的日期,,和这个孩子的生日
你能算出离现在最近的下一个生日
还有多少天么?
输入格式 InputFormat
第一行,一个日期,格式为年-月-日第二行,也是一个日期,格式为月-日
两个日期不足2位都高位补零
输出格式 OutputFormat
一行,一个整数,表示还有多少天样例输入 SampleInput [复制数据]
2009-07-1007-10
样例输出 SampleOutput [复制数据]
365
数据范围和注释 Hint
[样例解释]注意是下一个..!
#include <iostream>#include <string>#include <sstream>using namespace std;bool isLeapYear(int y){if(y%4==0){if(y%100==0){if(y%400==0) return true;else return false;}else return true;}else return false;}int UpperDay(int y, int m){if(m==2&&isLeapYear(y)) return 29;switch(m){case 2: return 28;case 4:case 6:case 9:case 11: return 30;default: return 31;}}void AddOneDay(int& y,int& m, int& d){if(d<UpperDay(y,m)) ++d;else{if(m==12){m = 1;++y;}else ++m;d = 1;}}int main(){string now;cin >> now;int y, m, d;y = (now[0]-'0')*1000 + (now[1]-'0')*100 + (now[2]-'0')*10 +(now[3]-'0');m = now[6] - '0';m += (now[5]-'0')*10;d = now[9] - '0';d += (now[8]-'0')*10;string birth;cin >> birth;int mon, day;mon = birth[1]-'0';mon += (birth[0]-'0')*10;day = birth[4]-'0';day += (birth[3]-'0')*10;int cnt = 0;if(m==mon&&d==day){AddOneDay(y,m,d);++cnt;}while(m!=mon||d!=day){AddOneDay(y,m,d);++cnt;}cout << cnt << endl;return 0;}
这个嘛,其实本来也想归入“模拟算法”的分类的,但是想想,算了,虽然本质是模拟算法,但是还是放到日期这里来吧!
模拟的是加一天的,由于是模拟现实的规律,代码一看就懂了,就不多做无聊的解释了。
值得注意的是,在传参数的时候记得用引用,月份和日期要用引用,这个很容易理解,因为在main函数里面是根据它们的变化来终止循环的!
但是年份为什么要用引用呢?哈哈,这个你自己是试一下这个数据:
2012-02-29
02-29
就知道了,因为如果年份不跟随月份和天数变化的化,它在判断闰年等地方就会出错,我也是wa了一次,才找到这个bug的!
呀呀,这次真的去吃饭了,快没菜了,啊啊啊啊,卡里也快没钱了······~
0 0
- 下一个生日要多久
- 计算距离你的生日还有多久
- 程序员要做多久?
- 忘记一个人要多久
- 入门 Python 要多久?
- DB-Day2 输入生日的月和日,计算出你下一个生日还有多少天
- 爱一个要多久!忘一个人要多久!
- [原创]爱一个人要多久?
- 发表文章要审核多久啊
- 主管要生日了
- 生日
- 生日
- 生日
- 生日
- 生日
- 生日
- 生日
- 生日
- springmvc过滤器问题
- SharePoint 2013 Managed Metadata Navigation – Cross Site Collections…It Kind of Works
- android中src和background区别
- CPU频率高低关呼到手机速度吗
- 为什么使用ActiveMQ
- 下一个生日要多久
- 浅析Java抽象类和接口的比较
- ERROR:Only the original thread that created a view hierarchy can touch its views. Android更新UI
- UVa572 - Oil Deposits
- kfifo
- setContentView用法
- 专访阿里云总裁王文彬:做出“用得爽”的工程产品
- 分享:APK高级保护方法解析(三)
- vim高效使用