P5690 [CSP-S2019 江西] 日期
2024-09-08 18:46:26
简要题意
给你一个格式为 \(\texttt{MM-DD}\) 的日期。你每一次可以更改一个整数,花费 \(1\) 的代价。求将该日期改为一个合法的日期的最小代价。(注:\(2\) 月视为 \(28\) 天)
思路
我再也不会看不起红题了!
首先判断月份是否合法,如果不合法,那么调整月份,分为一下情况:
- 若月份的十位为 \(1\),那么我们可以用 \(1\) 的代价,将月份改为 \(12\)(因为 \(12\) 月有 \(31\) 天,比 \(11\) 月多)
- 若月份个位为 \(2\),那么我们可以用 \(1\) 的代价,将月份改为 \(12\)。
- 否则将其改为个位数(个位数总是合法)。
然后判断天数,如果大于当前月份(如果不合法那么要改过的)的天数,那么花费 \(1\) 的代价,将它改为个位数即可。
时间复杂度 \(O(1)\)。
代码
#include <bits/stdc++.h>
using namespace std;
int month,day,tot;
int md[]={114514,31,28,31,30,31,30,31,31,30,31,30,31};
signed main(){
scanf("%d-%d",&month,&day);
if(month==0||month>12){
if(month/10==1){
month=12;
tot++;
}
else if(month%10==2){
month=12;
tot++;
}
else{
month=month%10;
tot++;
}
}
if(day==0||md[month]<day){
tot++;
}
cout<<tot<<'\n';
return 0;
}
最新文章
- 导入dmp文件时的注意事项
- c#中各类日期的计算方法,收藏
- js 猜数字游戏
- .NET使用OpenSSL生成的pem密钥文件
- Filter实现全站违法关键词屏蔽
- ADO.NET数据库
- struts2+Hibernate4+spring3+EasyUI环境搭建之二:搭建spring
- oracle 字段上下两条记录的相减
- SHGetSpecialFolderLocation
- EffectiveC#3--选择is或者as操作符而不是做强制类型转换
- [转]设置MS Office Word for mac的默认显示比例
- 深入理解Arrays.sort() (转)
- Thinking in Java系列 文档+代码+简评
- 【渗透笔记】友情检测朋友公司并拿下shell过程
- Tornado 用户身份验证框架
- JAVA中if多分支和switch的优劣性。
- UE4中创建第一、第三人称角色,并进行角色间的切换
- 资源预加载preload和资源预读取prefetch简明学习
- Django使用redis实现缓存
- 关于C#mvc用iis发布,虚拟目录的问题。