P1202 [USACO 1.1] 블랙 프 라이 데 이 13 일 금요일

1458 단어 noip알고리즘
제목 설명
13 그럼 13 일 금요일 이 다른 날 보다 적어 요?
이 질문 에 대답 하기 위해 서 는 한 달 13 일 월요일 부터 일요일 까지 의 횟수 를 계산 해 야 한다.내놓다 nn 년 주기 1900 년. 1 월. 1 동지 1900 + n - 1 년 12 월. 31 일 중 13 일이 월요일 부터 일요일 까지 떨 어 진 횟수.
여기에 네가 알 아야 할 것들 이 있다.
1、1900 년. 1 월. 1 월요일
2、4,6,11 화해시키다 9 월 유 3030 다른 달 2 달 도 있다 31 윤년 2 월 유 29 평년 2 월 유 28 하늘
3. 년도 4 윤년 그래서 1992 윤년 윤년 이 아니다.
4. 이상 의 규칙 은 세기 에 적합 하지 않다.되다 400 정 제 된 세기 의 해 는 윤년 이 고, 그렇지 않 으 면 평년 이다.그래서 1700, 1800, 1900, 2100. 평년 2000 년 은 윤년 이다.
입력 형식
하나의 정수 n。
출력 형식
토요일, 일, 일, 이, 삼, 사, 오 재 를 순서대로 수출 하 다. 13 일별 횟수.
입 출력 샘플
입력 \ # 1 복사
20

출력 \ # 1 복사
36 33 34 33 35 35 34

설명 / 제시
[데이터 범위] 네. 100% 의 데이터, 1 ≤ n ≤ 400.
제목 번역 은 NOCOW 에서 왔 다.
USACO Training Section 1.1
알고리즘 분석: 이 알고리즘 은 말 할 만 한 것 이 없습니다. 간단 한 시 뮬 레이 션 일 뿐 입 니 다. 문 제 를 쓰 는 것 은 대부분 사람들 이 윤년 에 대한 처리 가 비교적 나 쁜 것 을 보 는 것 입 니 다. 여기 서 비교적 적용 되 는 윤년 처리 방식 을 추천 합 니 다.
코드 구현:
#include
using namespace std;
int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//     
int a[10];//   
bool judge(int x) //     
{
	if(x%400==0||x%4==0&&x%100!=0)
		return true;
	return false;
}
int main()
{
	int n;
	cin>>n;
	int sum=0;
	for(int i=1900;i<=1900+n-1;i++)//     
	{
		for(int j=1;j<=12;j++)//     
		{
			a[(sum+13)%7]++;
			sum+=month[j]; 
			if(j==2&&judge(i)) sum++;//        
		}
	}
	cout<

좋은 웹페이지 즐겨찾기