蓝桥杯真题练习-猜生日
## 填空题 2012 省赛
题目概述
2012年3月12日植树节,有位叔叔说他的出生的日期写成8位的形式,例如:20010109可以被今天的年、月、日整除,让你猜他生日。因为猜起来忒费劲了,他又加了一句,他六月出生的。
思路
1.这题主要在审题,首先一点,明确生日可以被2012、3、12、6整除
2.既然是6月出生的,那么日期后两位一定是01到30(1、3、5、7、8、10、腊(12月)三十一天永不差。4、6、9、冬(11月)三十天……这个可不要说你不知道哈。)从左向右数第五第六位是月份的位置,那肯定是06固定不变了。
3.接下来确定开始的年份写个循环就行了,这个要注意了,你不能从八位中在最小10006001开始循环,给他叔整宋朝(960年—1279年)去了。直接从20120601开始往下,循环多好。
哈?你问我既然是叔叔为什么不干脆从20000601开始,万一是他小叔你可咋整。
4.每判断一次减减就行了,到01减减变为00则判断一下,直接年份减一,也就是减10000,日期加到30号。
#include<iostream>
using namespace std;
int main(){
int year=20120601;
while(1){
if(year%2012==0&&year%3==0&&year%12==0&&year%6==0){
cout<<year;
return 0;
}
year--;
if(year%100==0){
year=year-10000+30;
}
}
}