题目描述
Alice在纸上写下了一个日期,形式为 MM-DD,其中 MM与DD都是两位数字,分别表示月和天,然而这个日期并不一定存在。 Alice找来了Bob要他更改若干位上的数字,使得这个日期存在。请你帮Bob算算他最少需要更改几位数字。
本题中我们认为 2 月固定为 28 天。
样例
输入
03-32
输出
1
输入
02-39
输出
1
输入
67-89
输出
2
C++ 代码
#include<iostream>
using namespace std;
const int N = 10;
char a[N];
int main()
{
int k=0;
for(int i=0;i<5;i++)
cin>>a[i];
if(a[1]=='2')
{
if(a[3]=='2')
{
if(a[4]=='9')
k++;
}
if(a[3]=='3'||a[3]=='4'||a[3]=='5'||a[3]=='6'||a[3]=='7'||a[3]=='8'||a[3]=='9')
k++;
if(a[3]=='0')
{
if(a[4]=='0')
k++;
}
}
if(a[1]=='1'||a[1]=='3'||a[1]=='5'||a[1]=='7'||a[1]=='8'||(a[0]=='1'&&a[1]=='0')||(a[0]=='1'&&a[1]=='2'))
{
if(a[3]=='0'&&a[4]=='0')
k++;
if(a[3]=='3')
{
if(a[4]!='0'||a[4]!='1')
k++;
}
if(a[3]=='4'||a[3]=='5'||a[3]=='6'||a[3]=='7'||a[3]=='8'||a[3]=='9')
k++;
}
if(a[0]=='0'&&a[1]=='0')
{
k++;
if(a[3]=='0'&&a[4]=='0')
k++;
if(a[3]=='3')
{
if(a[4]=='2'||a[4]=='3'||a[4]=='4'||a[4]=='5'||a[4]=='6'||a[4]=='7'||a[4]=='8'||a[4]=='9')
k++;
}
if(a[3]=='4'||a[4]=='5'||a[4]=='6'||a[4]=='7'||a[4]=='8'||a[4]=='9')
k++;
}
if(a[0]=='1'||a[0]=='2'||a[0]=='3'||a[0]=='4'||a[0]=='5'||a[0]=='6'||a[0]=='7'||a[0]=='8'||a[0]=='9')
{
if(a[1]=='0'||a[1]=='3'||a[1]=='4'||a[1]=='5'||a[1]=='6'||a[1]=='7'||a[1]=='8'||a[1]=='9')
k++;
}
if(a[1]=='4'||a[1]=='6'||a[1]=='9'||(a[0]=='1'&&a[1]=='1'))
{
if(a[3]=='0'&&a[4]=='0')
k++;
if(a[3]=='3')
{
if(a[4]!='0')
k++;
}
if(a[3]=='4'||a[3]=='5'||a[3]=='6'||a[3]=='7'||a[3]=='8'||a[3]=='9')
k++;
}
printf("%d\n",k);
return 0;
}