gpt4 book ai didi

c - C 语言欧拉项目 #19

转载 作者:行者123 更新时间:2023-11-30 21:45:15 25 4
gpt4 key购买 nike

我在 euler 项目上尝试了问题 19。答案是 171,但我的代码给出 1199,这与预期答案相差甚远。有人可以告诉我哪里出错了吗?-- 问题链接在这里:https://projecteuler.net/problem=19

#include<stdio.h>
int main()
{
int count=2;
int flag1=0;
int flag2=0;
int month=1;
int day=1;
int year=1901;
int sunday=0;//count sundays

while(1)
{

//check for leapyears
if(year%4)
{
if((year%100==0 && year%400==0) || year%100!=0)
flag2=1;
}

//update months(31days)
if((month==1 ||month==3 || month==5 || month==7 || month==8 || month==10|| month==12) && day==31)
{
flag1=1;
day=1;
month++;
if(month==13)
{
month=1;
year++;
flag2=0;
}
}
//update months(30days)
if((month==4 || month==6 || month==9 || month==11) && day==30)
{
flag1=1;
day=1;
month++;
}
//update month:february
if(month==2)
{
if((flag2==0 && day==28) || (flag2==1 && day==29))
{
flag1=1;
day=1;
month=3;
}
}

//check sunday of every month
if(count%7==0 && flag1==1)
{
sunday++;
flag1=0;
}

count++;

day++;

if(year==2001)
break;
}
printf("%d\n",sunday);

return 0;
}

最佳答案

存在三处错误。

  • 检查闰年:if(year%4) 必须是 if (year%4==0)
  • 更新月份:当您从一个月的最后一天到下个月的第一天时,您忘记了增加天计数
  • 检查每个月的星期日:在遇到星期日之前,您不会重置flag1,即使那不是该月的第一天。

后两个错误可以这样纠正:

        count += flag1; // account for extra day step
if (count%7==0 && flag1) sunday++;
flag1 = 0; // reset `first of month` flag for this month

关于c - C 语言欧拉项目 #19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com