雨夜放烟花 2023-03-11 22:22 采纳率: 0%
浏览 53

蓝桥杯代码问题(日期遍历)

问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 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;
}


  • 写回答

2条回答 默认 最新

  • 破壁英雄 2023-03-11 23:03
    关注

    代码中的闰年判断

    if(((i%400==0)||(i%4==0&&i%100!=0))&&(j==2)) 
    {
      t=28;
    }else
    {
      t=29;
    }
    

    因为上面判断的是是否是闰年,如果是的话应把t=29, 否则才把t=28
    应把顺序改一下:

    if(((i%400==0)||(i%4==0&&i%100!=0))&&(j==2)) 
    {
      t=29;
    }else
    {
      t=28;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月11日

悬赏问题

  • ¥15 Fatal error in Process MEMORY
  • ¥15 labelme生成的json有乱码?
  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 怎样才能让IDEA不爆红
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志