2017 바 이 두 스타 첫 경기: A - 1005. 오늘 저녁 은 언제 입 니까?
1966 단어 각종 문제
Accepts: 1345
Submissions: 5533
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
Problem Description
오늘 은 2017 년 8 월 6 일 이 며 음력 은 6 월 15 일이 다.
소 도 는 홀로 난간 에 기대 어 둥 근 달 을 바라 보 며 '오늘 저녁, 이 양 인 을 만 나 자' 는 외 로 운 감개 를 보 냈 다.
우울 한 마음 을 달 래 기 위해 수학 문 제 를 생각 하기 로 했다. 앞으로 몇 년 동안 의 같은 날 은 오늘 의 요일 과 같 습 니까?예 를 들 어 오늘 은 8 월 6 일, 일요일 이다.다음 도 일요일 인 8 월 6 일 은 2023 년 에 발생 한다.
팁: 양력 에 서 는 4 로 나 눌 수 있 지만 100 으로 나 눌 수 없 거나 400 으로 나 눌 수 있 는 해 가 윤년 이다.
Input
첫 번 째 행동 T 는 입력 데이터 그룹 수 를 나타 낸다.
각 그룹의 데 이 터 는 하나의 날 짜 를 포함 하고 있 으 며, 형식 은 YYY - MM - DD 이다.
1 ≤ T ≤ 10000
YYYY ≥ 2017
날 짜 는 반드시 합 법 적 인 날짜 이다.
Output
각 그룹의 데이터 출력 답안 연도 에 대해 문 제 는 답안 이 네 자릿수 를 넘 지 않도록 보증한다.
Sample Input
3
2017-08-06
2017-08-07
2018-01-01
Sample Output
2023
2023
2024
일 년 일 년 을 더 하면 일수 차 가 7 의 배수 가 된다.
특수 상황 주의: 날 짜 는 2 월 29 일 이 니 특 판 하면 됩 니 다.
두 그룹의 강력 한 데이터:
2016-2-29
2096-2-29
답:
2044 2108
#include
int main(void)
{
int T, y, m, d, now, sum;
scanf("%d", &T);
while(T--)
{
scanf("%d-%d-%d", &y, &m, &d);
if(m==2 && d==29)
{
now = y;
sum = 0;
while(sum==0 || sum%7!=0)
{
now += 4;
sum += 1461;
if(now%100==0 && now%400!=0)
{
now += 4;
sum += 1460;
}
}
printf("%d
", now);
}
else if(m<=2)
{
sum = 0;
now = y;
while(sum==0 || sum%7!=0)
{
if(now%4==0 && now%100!=0 || now%400==0)
sum += 366;
else
sum += 365;
now++;
}
printf("%d
", now);
}
else
{
sum = 0;
now = y;
while(sum==0 || sum%7!=0)
{
now++;
if(now%4==0 && now%100!=0 || now%400==0)
sum += 366;
else
sum += 365;
}
printf("%d
", now);
}
}
return 0;
}