问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
题目答案是70910,但是下边是我写的代码(填空题就没优化、简化代码),结果运行出来一直是71072,多了一些,请各路兄弟帮忙看一下,谢谢啦!
#include<bits/stdc++.h>
using namespace std;
int t,cnt=0;
int sum1(int n)
{
int sum=0;
while(n>0)
{
sum+=n%10;
n/=10;
}
return sum;
}
int main()
{
for(int i=1900;i<=9999;i++)
{
for(int j=1;j<=12;j++)
{
if(((i%400==0)||(i%4==0&&i%100!=0))&&(j==2))
{
t=28;
}else
{
t=29;
}
if(j==1)t=31;
if(j==3)t=31;
if(j==4)t=30;
if(j==5)t=31;
if(j==6)t=30;
if(j==7)t=31;
if(j==8)t=31;
if(j==9)t=30;
if(j==10)t=31;
if(j==11)t=30;
if(j==12)t=31;
for(int k=1;k<=t;k++)
{
if(sum1(i)==sum1(j)+sum1(k))
{
cnt++;
}
}
}
}
cout<<cnt;
return 0;
}