news 2026/7/6 14:55:12

UVa 518 Time

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UVa 518 Time

题目描述

题目要求计算在两个时间点之间完整包含的给定时间周期(年、月、日、时、分、秒)的数量。时间点由年月日时分秒组成(年份范围197019701970203020302030,日期合法)。闰年规则:能被444整除但不能被100100100整除,或能被400400400整除的年份为闰年。

输入格式

输入包含多个数据块,每个数据块有三行:

  • 第一行:666个整数,表示起始时间点D1D_1D1
  • 第二行:666个整数,表示结束时间点D2D_2D2D1<D2D_1 < D_2D1<D2)。
  • 第三行:一个整数和一个单词,表示周期长度和单位(yearmonthdayhourminutesecond)。
    每个数据块后有一个空行。

输出格式

对于每个数据块,输出一行一个整数,表示D1D_1D1D2D_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:5900:00:00111秒区间包含111个完整秒)。
  • 闰年影响二月的天数。
  • 输出整数除法结果(向下取整)。

复杂度分析

每个数据块O(1)O(1)O(1)计算。

代码实现

// Time// UVa ID: 518// Verdict: Accepted// Submission Date: 2017-04-29// UVa Run Time: 0.010s//// 版权所有(C)2017,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;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%400==0)||(year%4==0&&year%100!=0);}longlonggetYears(){longlongyears=0;for(inti=year1+1;i<year2;i++)years++;returnyears;}longlonggetMonths(){longlongmonths=getYears()*12;if(year1!=year2){for(inti=month1+1;i<=12;i++)months++;for(inti=1;i<month2;i++)months++;}else{for(inti=month1+1;i<month2;i++)months++;}returnmonths;}longlonggetDays(){longlongdays=0;for(inti=year1+1;i<year2;i++)days+=(isLeapYear(i)?366:365);intstart=day1+1;if(hour1==0&&minute1==0&&second1==0)start=day1;if(year1!=year2){for(inti=month1+1;i<13;i++){if(i==2)days+=(isLeapYear(year1)?29:28);elsedays+=daysInMonth[i];}for(inti=1;i<month2;i++){if(i==2)days+=(isLeapYear(year2)?29:28);elsedays+=daysInMonth[i];}}else{for(inti=month1+1;i<month2;i++){if(i==2)days+=(isLeapYear(year1)?29:28);elsedays+=daysInMonth[i];}}if(year1!=year2||month1!=month2){inttotalDays=0;if(month1==2)totalDays=(isLeapYear(year1)?29:28);elsetotalDays=daysInMonth[month1];for(inti=start;i<=totalDays;i++)days++;for(inti=1;i<day2;i++)days++;}else{for(inti=start;i<day2;i++)days++;}returndays;}longlonggetHours(){longlonghours=getDays()*24;intstart=hour1+1;if(minute1==0&&second1==0)start=hour1;if(year1!=year2||month1!=month2||day1!=day2){if(hour1!=0||minute1!=0||second1!=0)for(inti=start;i<24;i++)hours++;for(inti=0;i<hour2;i++)hours++;}else{for(inti=start;i<hour2;i++)hours++;}returnhours;}longlonggetMinutes(){longlongminutes=getHours()*60;intstart=minute1+1;if(second1==0)start=minute1;if(year1!=year2||month1!=month2||day1!=day2||hour1!=hour2){if(minute1!=0||second1!=0)for(inti=start;i<60;i++)minutes++;for(inti=0;i<minute2;i++)minutes++;}else{for(inti=start;i<minute2;i++)minutes++;}returnminutes;}longlonggetSeconds(){longlongseconds=getMinutes()*60;if(year1!=year2||month1!=month2||day1!=day2||hour1!=hour2||minute1!=minute2){if(second1!=0)for(inti=second1;i<60;i++)seconds++;for(inti=0;i<second2;i++)seconds++;}else{for(inti=second1;i<second2;i++)seconds++;}returnseconds;}intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);while(cin>>year1){cin>>month1>>day1>>hour1>>minute1>>second1;cin>>year2>>month2>>day2>>hour2>>minute2>>second2;cin>>period>>unit;if(unit=="year")cout<<(getYears()/period);if(unit=="month")cout<<(getMonths()/period);if(unit=="day")cout<<(getDays()/period);if(unit=="hour")cout<<(getHours()/period);if(unit=="minute")cout<<(getMinutes()/period);if(unit=="second")cout<<(getSeconds()/period);cout<<'\n';}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 14:54:55

AI 导出鸭一站式工具:Claude 做 word 文档规避导出难题

AI 导出鸭实操教学&#xff1a;Claude做word文档高效落地技巧AI 导出鸭一站式工具&#xff1a;Claude做word文档规避导出难题解决文档转换难题选AI 导出鸭&#xff0c;Claude做word文档零格式错乱 引言 当下各类大语言模型成为内容创作主流工具&#xff0c;Claude凭借超长上下文…

作者头像 李华
网站建设 2026/7/6 14:52:59

Centos系统学习

一、 概述 Linux是一个免费、开源的操作系统软件。 1.1 Linux的内核版本 Linux内核由C语言编写&#xff0c;符合POSIX标准。但是Linux内核并不能称为操作系统&#xff0c;内核只提供基本的设备驱动、文件管理、资源管理等功能&#xff0c;是Linux操作系统的核心组件。 Linux…

作者头像 李华
网站建设 2026/7/6 14:48:40

AI 设计 Token 校验:颜色对了,语义也不能乱

AI 设计 Token 校验&#xff1a;颜色对了&#xff0c;语义也不能乱 一、设计 Token 不是一堆变量名 AI 可以根据设计稿生成颜色、字号、间距等 token。这个功能看起来很香&#xff0c;尤其在设计系统早期能省很多录入工作。但如果缺少校验&#xff0c;模型会生成一堆看起来合理…

作者头像 李华
网站建设 2026/7/6 14:48:18

【项目编号:project58051】SpringBoot+小程序实现阿尔茨海默症患者服务系统:患者档案、健康监测、护理提醒全流程实战

如果要做一个既有现实意义、又适合答辩展示的健康服务类项目&#xff0c;阿尔茨海默症患者服务系统是一个很好的方向。它不是简单的后台增删改查&#xff0c;而是围绕患者、家属、护理人员和管理员之间的信息协同&#xff0c;把患者档案、健康状态、日常护理、训练记录和通知提…

作者头像 李华
网站建设 2026/7/6 14:45:31

让每一分财政资金都透明:FinOps 如何实现政务云预算的穿透式管理

**让每一分财政资金都透明&#xff1a;****FinOps 如何实现政务云预算的“穿透式”**管理 摘要&#xff1a; 财政部门在管理政务云资源时&#xff0c;普遍面临预算软约束、资源明细不可见、预算执行监控难等痛点。传统的预算管理模式依赖经验估算和事后核算&#xff0c;难以适应…

作者头像 李华