提高组的入门题

最近CSP的比赛就要开始了,我一看,哎呀,S组的题目都没有看,咋办啊??

那我只好打开洛谷,搜一下CSP-S的内容,一看,红的?马上点进去了。

题目描述

Alice在纸上写下了一个日期,形式为 MM-DD,其中 MM与 DD都是两位数字,分别表示月和天,然而这个日期并不一定存在。 Alice找来了Bob要他更改若干位上的数字,使得这个日期存在。请你帮Bob算算他最少需要更改几位数字。

本题中我们认为 2 月固定为 28 天。

思考

那么既然是入门,应该十分简单。

按照正常人的思路,应该是这样子的:

特殊判断MM是否个位为2并大于12,是则改为12

特殊判断MM是否个位为10并大于12,是则改为10

判断MM是否大于12,不正确就把十位改成0;

判断DD是否超过当月的数量,不正确就将十位改为1;

那么就出来了

代码

#include
using namespace std;
int mm,dd,ans=0;
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31}; 
int main(){
	scanf("%d-%d",&mm,&dd);
	if(mm%10==2&&mm>12){
		ans++;
		mm=12;
	}
	else if(mm>12&&mm%10==0){
		ans++;
		mm=10;
	}
	else if(mm>12){
		ans++;
		mm%=10;
	}
	if(dd>m[mm-1]){
		ans++;
	}
	cout<

有点长,用了好多if


 

你可能感兴趣的:(算法)