题目描述
Alice在纸上写下了一个日期,形式为 MM-DD,其中MM 与 DD都是两位数字,分别表示月和天,然而这个日期并不一定存在。 Alice找来了Bob要他更改若干位上的数字,使得这个日期存在。请你帮Bob算算他最少需要更改几位数字。
本题中我们认为 2 月固定为 28 天。
输入
仅一行一个五个字符的字符串,表示 MM-DD。
输出
仅一行一个整数,表示答案。
输入输出样例
输入 #1
03-32
输出 #1
1
输入 #2
02-39
输出 #2
1
输入 #3
67-89
输出 #3
2
说明/提示
【输入输出样例1说明】
更改方式不止一种,其中一种方式是改为: 03-22。
【输入输出样例2说明】
一种更改方式为:02-09。
【输入输出样例3说明】
一种更改方式为:07-09。
【数据规模与约定】 对于 100%的数据:MM与 DD一定为 4 个数字。
-
#include<bits/stdc++.h>
-
using namespace std;
-
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
-
int main(){
-
int n,m,num=0,mi=INT_MAX;
-
char a;
-
cin>>n>>a>>m;
-
if(n==0){//特判注意00-00和00-31的测试点
-
num++;
-
n=1;
-
}
-
if(m==0){
-
num++;
-
m=1;
-
}
-
if(n>12){
-
if(n%10<=2){
-
if(month[10+n%10]>=m){
-
cout<<1;
-
return 0;
-
}
-
}
-
if(n%10!=0){
-
num++;
-
if(month[n%10]<m){
-
num++;
-
}
-
cout<<num;
-
return 0;
-
}else if(n/10>=2){
-
num+=2;
-
if(month[n%10]<m){
-
num++;
-
}
-
cout<<num;
-
return 0;
-
}
-
}
-
if(month[n]<m){
-
num++;
-
}
-
cout<<num;
-
return 0;
-
}