题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
今年的植树节(2012 年 3 月 12
日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”“把我出生的年月日连起来拼成一个 8 位数(月、日不足两位前补 0)正好可以被今天的年、月、日整除!”
他想了想,又补充到:“再给个提示,我是 6 月出生的。”
根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
格式是年月日连成的 88 位数。例如,如果是 1948 年 6 月 12 日,就写:19480612。
运行限制
最大运行时间:1s
最大运行内存: 128M
思路:这题最关键是这个8位数能被2012、3和12同时整除,所以只要找出一个8位数n能使得n%20120&&n%30&&n%12==0为真就行了,结合常识来看最保守是从1900年06月01日开始,到2012年06月01日结束。因为他已经说是6月份了,所以这个循环不会超过10^6,也就是不会超时。
#include<iostream>
using namespace std;
int main() {
int n = 19000601;
int k = 1;
for (; n < 20120601; n++,k++) {
if (n%2012==0&&n%3==0&&n%12==0)
{
cout << n;
}
if (k==30)
{
k = 1;
n = n + 10000 - 29; //当日期为30时直接年份加1,日期重置为1
}
}
return 0;
}