今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”
“把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!”
他想了想,又补充到:“再给个提示,我是6月出生的。”
根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
答案写在“解答.txt”中,不要写在这里!
格式是年月日连成的8位数。
例如,如果是1948年6月12日,就写:19480612
参考答案:
19550604
这道题目虽然思路好像,但是细节部分的处理比较麻烦,还有要加上现实的意义才行,比如他的年龄一定是小于100岁,日期的正确性等等,其实,即使不在代码中筛选,就算结果比较多,我们一眼就可以看出哪些是符合题意的。
#include<iostream>
using namespace std;
void judge(int a,int b,int c,int d,int e,int f,int g,int h)
{
if((e*10+f)<=12&&(g*10+h)<=31&&(a*1000+b*100+c*10+d)<2012&&(a*1000+b*100+c*10+d)>1900)
{
long long sum=a*10000000+b*1000000+c*100000+d*10000+e*1000+f*100+g*10+h;
if(sum%2012==0&&sum%3==0&&sum%12==0)
cout<<a<<b<<c<<d<<e<<f<<g<<h<<endl;
}
}
int main()
{
int year,day;
for(int a=1;a<=2;a++)
{
for(int b=0;b<=9;b++)
{
for(int c=0;c<=9;c++)
{
for(int d=0;d<=9;d++)
{
for(int e=0;e<=0;e++)
{
for(int f=6;f<=6;f++)
{
for(int g=0;g<=3;g++)
{
for(int h=0;h<=9;h++)
{
judge(a,b,c,d,e,f,g,h);
}
}
}
}
}
}
}
}
return 0;
}