-6
Я пробовал проблему 19 на эйлере проекта. Ответ равен 171, но мой код дает 1199, что не соответствует ожидаемому ответу. Может кто-нибудь, пожалуйста, скажите мне, где я ошибаюсь? - Ссылка на проблему здесь: https://projecteuler.net/problem=19PROJECT EULER # 19 in C
#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;
}
Как вы пытались отладить его до сих пор? – Shaun
'if (year% 4)' никогда не является високосным годом, поэтому последующие столетние испытания не имеют успеха. –
'leap = year% 4 == 0 && (year% 100! = 0 || year% 400 == 0);' –