瞬身李子啊 2023-03-08 11:23 采纳率: 77.8%
浏览 579
已结题

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

问题描述

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

2条回答 默认 最新

  • Bing Shao 2023-03-08 11:29
    关注

    12月31号做完应直接continue

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日