Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Adagio non molto

823년만에 일어나는 달은 거짓 본문

Study/C

823년만에 일어나는 달은 거짓

마르카토* 2011. 6. 22. 13:42


요즘 화제가 되는 문자를 나도 받았었다. 823년만에 금요일, 토요일, 일요일이 5개 있는 달이 찾아왔다나... 친구들에게 돌리면 돈이 생긴다는데 첨엔 그럴듯 했으나 곧장 사실이 아님을 알 수 있었다.

뉴스기사를 찾아보니 2009년 5월과 2004년 10월에 이미 이러한 달이 있었다고 한다 ㅋㅋ

그래서 호기심을 가지고 C로 작성을 한 후 쭉~ 뽑아봤더니 놀라운 결과를 얻었다.
내가 작성한 코드가 틀리지 않았다면

2013년 3월, 2014년 8월, 2015년 5월, 2016년 1월, 7월 등 엄청 많다.
얼추 뽑아봐도 가장 긴 간격이 2년 안될 정도니... 사실 이런 달은 많다. ㅋㅋ

왜 이런 글들이 퍼졌는가는 모르겠는데... 흠.. 나름 오.. 과학적이고 수학적인 행운의 편지가? 하는 기대가 있었으나 ㅋㅋㅋㅋㅋ

아래는 내가 작성한 소스다. (도대체 더 보기 기능은 어떻게 쓰는거지..;)

#include <stdio.h>

int main(void)
{
 int y=2011,m=7;
 int first=0;
 int endN;

 printf("몇년도 까지 구할꺼?( 근데 시작년도가 2011년임 ㅋ) ");
 scanf("%d",&endN);

 while(1)
 {
  if(m==1 || m==3 || m==5 ||m==7 ||m==8 ||m==10 ||m==12)
   first=first+3;
  else if(m==4 || m==6 || m==9 || m==11)
   first=first+2;
  else if(m==2){
   if(y%4==0 && y%100!=0)
    first++;
   else if(y%400==0)
    first++;
  }
  m++;
  if(m==13)
  {y++;m=1;}
  if(first%7==0){
   if(m==1 || m==3 || m==5 ||m==7 ||m==8 ||m==10 ||m==12)
    printf("%d년 %d월에 일어납니다.\n",y,m);
  }
  if(y>endN)
   break;
 }
 return 0;
}

'Study > C' 카테고리의 다른 글

디버깅  (0) 2012.05.31
정수 선언 후 바이트별로 출력하기  (0) 2012.05.10
Comments