허..문제는 2014년 6월 13일을 첫번째 13일의 금요일로 가정하고 3031번째 13일의 금요일을 찾는건데요
제 코드는
#include <stdio.h>
void main()
{
int i=0;
int j=0;
int k=0;
int p=0;
for(i=2014;i<=3809;i++)
{
k=(i-1)+(i-1)/4-(i-1)/100+(i-1)/400;
p=k%7+7;
switch(p)
{
case 0:
j+=2;
break;
case 1:
j+=2;
break;
case 2:
j++;
break;
case 3:
j+=3;
break;
case 4:
j++;
break;
case 5:
j++;
break;
case 6:
j+=2;
break;
case 7:
j++;
break;
case 8:
j++;
break;
case 9:
j+=2;
break;
case 10:
j+=2;
break;
case 11:
j++;
break;
case 12:
j++;
break;
case 13:
j+=3;
break;
default:
break;
}
}
printf("j는 %d입니다", j);
}
에요.
만년 달력의 원리를 이용해서 각 년마다의 13일의 금요일을 숫자를 구한 후 j에 축적시켜서 보는 형식인데
윤년은 4의 배수를 가진 년도이고 100의 배수인 년도는 다시 평년, 400의 배수인 년도는 다시 윤년입니다.
윤년의 경우 p에다가 7을 더해야 해서
평상 계산-평상으로 계산한 4의 배수 윤년들+윤년으로 다시 계산한 4의 배수 윤년들-윤년으로 다시 계산한 100의 배수 평년들+평상으로 다시 계산한 100의 배수 평년들-평상으로 다시 계산한 400의 배수 윤년들+윤년으로 다시 계산한 400의 배수 윤년들
이렇게 계산했거든요....
계산 결과 3809년 01월 13일이 나오는데 답이 자꾸 틀렸다고 나오네요;;;;
원래 안올리려다가 제 기준에서는 답이 너무 확실한데 틀려서 올리는거에요ㅠㅠ
답은 안 가르쳐주셔도 되니까ㅠ 논리의 오류같은것 좀 찝어주세요ㅠㅠㅠ