题目链接:https://www.luogu.com.cn/problem/P5690
思路:
虽然题目给MM-DD四个数字,但是可以直接输入两个数字更好处理,month和day
求更改数字最少次数,无非是可能在月份改一次,可能在天数改一次
设至少更改次数为sum,并初始化为0
首先判断月份是否正确:
若month = 0,则++ sum;(这个WA了个测试点!)
若month > 12,则需要更改,并将month改为正确值,注意,若month的个位数为2,将month直接改为12
然后判断天数是否正确:
用一个数组先贮存正确的月份的正确天数,这样:
int d[13] = { 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
同时这里也要注意 d[0] 的情况,是10月份
若day > d[ (正确的月份)],则++ sum;
完整代码如下:
#include <iostream>
using namespace std;
int main()
{
int month, day, sum = 0;
int d[13] = { 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
scanf("%d-%d", &month, &day);
if (month == 0)
{
++sum;
}
else if (month > 12)
{
++sum;
if (2 == month % 10)
{
month = 12;
}
else
{
month %= 10;
}
}
if (day > d[month])
{
++sum;
}
cout << sum << endl;
return 0;
}