UVa 518 Time 题目描述题目要求计算在两个时间点之间完整包含的给定时间周期年、月、日、时、分、秒的数量。时间点由年月日时分秒组成年份范围197019701970到203020302030日期合法。闰年规则能被444整除但不能被100100100整除或能被400400400整除的年份为闰年。输入格式输入包含多个数据块每个数据块有三行第一行666个整数表示起始时间点D1D_1D1​。第二行666个整数表示结束时间点D2D_2D2​D1D2D_1 D_2D1​D2​。第三行一个整数和一个单词表示周期长度和单位year、month、day、hour、minute、second。每个数据块后有一个空行。输出格式对于每个数据块输出一行一个整数表示D1D_1D1​到D2D_2D2​之间完整包含的周期数。样例输入1997 12 31 23 59 59 1998 1 1 0 0 0 1 second 2000 2 29 0 0 0 2000 2 29 23 59 59 1 day 2000 2 29 0 0 0 2000 3 1 0 0 0 24 hour 1996 12 31 20 30 0 1997 1 1 7 30 0 60 minute 1996 12 31 20 30 0 1997 1 1 7 30 0 1 hour输出1 0 1 11 10题目分析本题的核心是计算两个时间点之间完整包含的周期数。需要根据单位分别计算并考虑闰年和月份天数的变化。计算方法对于给定的起始时间D1D_1D1​和结束时间D2D_2D2​计算从D1D_1D1​的下一时刻到D2D_2D2​的指定时间单位数量然后除以周期长度。具体实现对于年计算D1D_1D1​之后第一个整年的起始时刻到D2D_2D2​之前最后一个整年的结束时刻之间的整年数。对于月类似地计算整月数。对于日、时、分、秒将D1D_1D1​的下一时刻到D2D_2D2​的时刻之间的总秒数或分钟、小时、天数除以周期长度。边界处理起始时间点的当前单位不计入例如从23:59:59到00:00:00的111秒区间包含111个完整秒。闰年影响二月的天数。输出整数除法结果向下取整。复杂度分析每个数据块O(1)O(1)O(1)计算。代码实现// Time// UVa ID: 518// Verdict: Accepted// Submission Date: 2017-04-29// UVa Run Time: 0.010s//// 版权所有C2017邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intyear1,month1,day1,hour1,minute1,second1;intyear2,month2,day2,hour2,minute2,second2;longlongperiod;string unit;intdaysInMonth[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};boolisLeapYear(intyear){return(year%4000)||(year%40year%100!0);}longlonggetYears(){longlongyears0;for(intiyear11;iyear2;i)years;returnyears;}longlonggetMonths(){longlongmonthsgetYears()*12;if(year1!year2){for(intimonth11;i12;i)months;for(inti1;imonth2;i)months;}else{for(intimonth11;imonth2;i)months;}returnmonths;}longlonggetDays(){longlongdays0;for(intiyear11;iyear2;i)days(isLeapYear(i)?366:365);intstartday11;if(hour10minute10second10)startday1;if(year1!year2){for(intimonth11;i13;i){if(i2)days(isLeapYear(year1)?29:28);elsedaysdaysInMonth[i];}for(inti1;imonth2;i){if(i2)days(isLeapYear(year2)?29:28);elsedaysdaysInMonth[i];}}else{for(intimonth11;imonth2;i){if(i2)days(isLeapYear(year1)?29:28);elsedaysdaysInMonth[i];}}if(year1!year2||month1!month2){inttotalDays0;if(month12)totalDays(isLeapYear(year1)?29:28);elsetotalDaysdaysInMonth[month1];for(intistart;itotalDays;i)days;for(inti1;iday2;i)days;}else{for(intistart;iday2;i)days;}returndays;}longlonggetHours(){longlonghoursgetDays()*24;intstarthour11;if(minute10second10)starthour1;if(year1!year2||month1!month2||day1!day2){if(hour1!0||minute1!0||second1!0)for(intistart;i24;i)hours;for(inti0;ihour2;i)hours;}else{for(intistart;ihour2;i)hours;}returnhours;}longlonggetMinutes(){longlongminutesgetHours()*60;intstartminute11;if(second10)startminute1;if(year1!year2||month1!month2||day1!day2||hour1!hour2){if(minute1!0||second1!0)for(intistart;i60;i)minutes;for(inti0;iminute2;i)minutes;}else{for(intistart;iminute2;i)minutes;}returnminutes;}longlonggetSeconds(){longlongsecondsgetMinutes()*60;if(year1!year2||month1!month2||day1!day2||hour1!hour2||minute1!minute2){if(second1!0)for(intisecond1;i60;i)seconds;for(inti0;isecond2;i)seconds;}else{for(intisecond1;isecond2;i)seconds;}returnseconds;}intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);while(cinyear1){cinmonth1day1hour1minute1second1;cinyear2month2day2hour2minute2second2;cinperiodunit;if(unityear)cout(getYears()/period);if(unitmonth)cout(getMonths()/period);if(unitday)cout(getDays()/period);if(unithour)cout(getHours()/period);if(unitminute)cout(getMinutes()/period);if(unitsecond)cout(getSeconds()/period);cout\n;}return0;}

相关新闻

最新新闻

AI生成JMeter性能测试脚本实战:以电商下单场景为例

AI生成JMeter性能测试脚本实战:以电商下单场景为例

1. 项目概述:当性能测试遇上AI如果你做过性能测试,尤其是用JMeter做过,那你一定对那个过程记忆犹新:打开JMeter,新建线程组,添加HTTP请求采样器,然后开始一个个地填服务器名称、路径、参数、请求…

2026/7/6 16:15:25
5分钟上手Syncthing-Fork:Android文件同步神器安装与配置教程

5分钟上手Syncthing-Fork:Android文件同步神器安装与配置教程

5分钟上手Syncthing-Fork:Android文件同步神器安装与配置教程 【免费下载链接】syncthing-android Syncthing-Fork - A Syncthing Wrapper for Android. 项目地址: https://gitcode.com/gh_mirrors/sync/syncthing-android 想要在Android设备上实现跨设备文件…

2026/7/6 16:15:25
CodexGuide CLI安装与使用:命令行玩转AI协作工具

CodexGuide CLI安装与使用:命令行玩转AI协作工具

CodexGuide CLI安装与使用:命令行玩转AI协作工具 【免费下载链接】CodexGuide CodexGuide:面向全球初学者、创作者、开发者与团队的 Codex 实践指南 项目地址: https://gitcode.com/gh_mirrors/co/CodexGuide CodexGuide CLI是一款强大的AI协作工…

2026/7/6 16:15:25
为什么选择libfabric?揭秘高性能计算领域通信框架的核心优势 [特殊字符]

为什么选择libfabric?揭秘高性能计算领域通信框架的核心优势 [特殊字符]

为什么选择libfabric?揭秘高性能计算领域通信框架的核心优势 🚀 【免费下载链接】libfabric Open Fabric Interfaces 项目地址: https://gitcode.com/gh_mirrors/li/libfabric 在当今高性能计算(HPC)和人工智能(AI)快速发展的时代,高效…

2026/7/6 16:15:25
AwaitKit vs 传统回调:Swift异步编程效率提升10倍的秘密

AwaitKit vs 传统回调:Swift异步编程效率提升10倍的秘密

AwaitKit vs 传统回调:Swift异步编程效率提升10倍的秘密 【免费下载链接】AwaitKit The ES8 Async/Await control flow for Swift 项目地址: https://gitcode.com/gh_mirrors/aw/AwaitKit 想要写出优雅的Swift异步代码吗?告别回调地狱&#xff0c…

2026/7/6 16:15:25
单片机中断详解:中断源、NVIC、优先级、抢占嵌套和中断服务函数

单片机中断详解:中断源、NVIC、优先级、抢占嵌套和中断服务函数

单片机中断详解:中断源、NVIC、优先级、抢占嵌套和中断服务函数 一、本文适用场景 中断是单片机和嵌入式开发中非常核心的机制。无论是 STM32、GD32、51 单片机,还是其他 Cortex-M 系列 MCU,只要涉及外设事件响应,基本都会用到中…

2026/7/6 16:10:24

月新闻