问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
题目答案是70910,但是下边是我写的代码,结果运行出来一直是70909,真的快找问题找哭了,帮忙必定关注,感谢
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
long long sum = 0;
int year = 1900, mouth = 1, day = 1;
while (1)
{
if (year / 1000 + year / 100 % 10 + year / 10 % 10 + year % 10 == mouth / 10 + mouth % 10 + day / 10 + day % 10)
{
sum++;
printf("%d %d %d\n", year, mouth, day);
}
if (year == 9999 && mouth == 12 && day == 31) break;
if (mouth == 12 && day == 31)
{
mouth = 1;
day = 1;
year++;
}
if (mouth == 2)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
if (day < 29) day++;
else
{
mouth++;
day = 1;
}
}
else
{
if (day < 28) day++;
else
{
mouth++;
day = 1;
}
}
}
else if (mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11)
{
if (day < 30) day++;
else
{
mouth++;
day = 1;
}
}
else
{
if (day < 31) day++;
else {
day = 1;
mouth++;
}
}
}
printf("%lld", sum);
}