对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 19001900 年 11 月 11 日至 99999999 年 1212 月 3131 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,20222022 年 1111 月 1313 日满足要求,因为 2+0+2+2=(1+1)+(1+3)2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int run(int n){
if(n%400==0||(n%4==0&&n%100!=0)){
return 29;
}
else{
return 28;
}
}
int main(int argc, char** argv) {
int y,m,d;
int sum=0;
y=1999;
m=1;
d=1;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
mon[2]=run(y);
for(y=1900;y<=9999;y++){
for(m=1;m<=12;m++){
mon[2]=run(y);
int sd=mon[m];
for(d=1;d<=sd;d++){
int a,b,c,e,f,g,h,x;
a=y/100%10;
b=y/10%10;
c=y%10;
x=y/1000;
e=m/10;
f=m%10;
g=d/10;
h=d%10;
int s=a+b+c+x;
int k=e+f+g+h;
if(s==k){
sum++;
}else{
continue;
}
}
}
}
cout<<sum;
return 0;
}