poj 3393 행운 과 좋 은 달 그 레 고리 안 달력 시 뮬 레이 션
#include <stdio.h>
#include <iostream>
using namespace std;
int flagRun=0;
int sum;
int Month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //
int Lmonth[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; //
enum week{Sun,Mon,Tue,Wed,Thu,Fri,Sat}; //
int leap(int year){
if(year<1582){
if(year%4==0)
return 1;
else return 0;
}else if(((year%4==0)&&(year%100!=0))||(year%400==0)||(year==1700))
return 1;
else
return 0;
}
int computeDay(int year,int month){
int day=1;
int i;
for(i=1;i<year;i++){
if(leap(i))
day+=366;
else
day+=365;
}
for(int j=1;j<month;j++)
if(leap(i))
day+=Lmonth[j];
else
day+=Month[j];
if(year>1752)
day-=11;
else if(year==1752 && month>9)
day-=11;
return day;
}
int main(){
int test;
cin>>test;
while(test--){
int ys,ms,ye,me;
int *pm;
int i,j;
cin>>ys>>ms>>ye>>me;
int luck=0,good=0;
int day= computeDay(ys,ms);
if(((day+5)%7<=Mon) || ((day+5)%7==Sat)) // ys ms 1 , good month
good++; //1 1 1 , , +5
for(i=ys;i<ye;i++){
if(leap(i))
pm=Lmonth;
else
pm=Month;
if(i==ys)
j=ms;
else
j=1;
for(;j<13;j++){
day+=*(pm+j);
if(i==1752&&j==9)
day-=11;
if(((day+5)%7<=Mon)||((day+5)%7==Sat)){
good++;
luck++;// j+1 good month, j luck month
}
}
}
/* ye good,luck month */
if(leap(i))
pm=Lmonth;
else
pm=Month;
if(i==ys)// ys=ye
j=ms;
else j=1;
for(;j<=me;j++){
day+=*(pm+j);
if(i==1752&&j==9)
day-=11;
if(((day+5)%7<=Mon)||((day+5)%7==Sat)){
if(j!=me)
good++;
luck++;// j+1 good month, j luck month
}
}
cout<<luck<<' '<<good<<endl;
}
system("PAUSE");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【GAS】Google 캘린더의 예정을 Slack 통지슬랙에 Google 캘린더 일정을 알리고 싶습니다. 아침 8시에 실행하여 대략 1일의 예정을 통지한다 slack의 내 프로필 → 환경 설정 → 메시지 및 미디어에서 Slack으로 메일 전송 사용 이메일 주소를 복사합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.