Hrbust 2315 Time ("科林明伦杯"哈理工第六届团队赛)

来源:互联网 发布:中国最新人口普查数据 编辑:程序博客网 时间:2024/05/01 18:41

技巧是打表增加day,较为简洁的实现

#include <iostream>using namespace std;int dayIn[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };//打表, 数组第一个元素下标是0不是1, 用0占位int year, month, day;//输入年月日int getDay(int &mon) {//函数返回这个月(mon)有几天if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))//判断闰年dayIn[2] = 29;//是闰年elsedayIn[2] = 28;//不是闰年return dayIn[mon];}int main() {int T, sec;//T数据组数, sec秒数char c;//接收输入的'-'cin >> T;for (int i = 0;i < T;++i) {cin >> year >> c >> month >> c >> day;cin >> sec;day += sec / 86400;//多少秒后换算成多少天后, 加到初始的day上, 利用int除法截断丢弃小数部分while (day > getDay(month)) {//当day不合法, 即day大于当前月应有的天数day -= getDay(month);//减去当前月的天数, 表示这个月过去了++month;if (month > 12) {++year;month = 1;}}printf("%d-%02d-%02d\n", year, month, day);//输出结果, 注意格式}return 0;}

阅读全文
0 0
原创粉丝点击