HDOJ 1201 18 번 째 생일
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23040 Accepted Submission(s): 7351
Problem Description
Gardon 의 18 번 째 생일 이 곧 다가 오 는데,그 는 당연히 매우 기 뻤 다.그러나 그 는 갑자기 한 가지 문제 가 생각 났 다.모든 사람 이 태 어 날 때 부터 18 번 째 생일 에 이 르 렀 을 때 지나 간 일수 가 똑 같 지 않 을 까?모두 그런 것 만 은 아 닌 것 같 아서 그 는 그 와 그의 친구 몇 명 이 태 어 나 18 번 째 생일 까지 거 친 총 일 수 를 계산 해 비교 해 달라 고 부탁 하고 싶 었 다.
Input
하나의 숫자 T,뒤의 T 줄 은 줄 마다 날짜 가 있 고 형식 은 YYYY-MM-DD 입 니 다.내 생일 이 1988-03-07 이 라면.
Output
T 행 은 줄 마다 한 번 씩 이 사람 이 태 어 나 18 번 째 생일 까지 거 친 날 수 를 나타 낸다.이 사람 이 18 번 째 생일 이 없다 면 수출-1.
Sample Input
1
1988-03-07
Sample Output
6574
Author
Gardon
Source
Gardon-DYGG Contest 2
Recommend
JGShining | We have carefully selected several similar problems for you: 1205 1215 1228 1235 1202
주의 하 다. if(yun(a)&&b==2&&c==29) return -1;
#include<stdio.h>
#include<string.h>
struct birth{
int year,mon,day;
}bir[200];
int yun(int a){
if(a%400==0||(a%100!=0&&a%4==0))
return 1;
else return 0;
}
int dday(int a,int b,int c){
int sum=0,i,starsum=0,endsum=0;
if(yun(a)&&b==2&&c==29) return -1;
for(i=(a+1);i<=(a+17);i++){
if(yun(i)) sum+=366;
else sum+=365;
}
if(yun(a)){
switch(b){
case 1: starsum+=31;
case 2: starsum+=29;
case 3: starsum+=31;
case 4: starsum+=30;
case 5: starsum+=31;
case 6: starsum+=30;
case 7: starsum+=31;
case 8: starsum+=31;
case 9: starsum+=30;
case 10: starsum+=31;
case 11: starsum+=30;
case 12: starsum+=31; break;
}
starsum-=c;
}
else{
switch(b){
case 1: starsum+=31;
case 2: starsum+=28;
case 3: starsum+=31;
case 4: starsum+=30;
case 5: starsum+=31;
case 6: starsum+=30;
case 7: starsum+=31;
case 8: starsum+=31;
case 9: starsum+=30;
case 10: starsum+=31;
case 11: starsum+=30;
case 12: starsum+=31; break;
}
starsum-=c;
}
if(yun(a+18)){
switch(b){
case 1: endsum+=31;
case 2: endsum+=29;
case 3: endsum+=31;
case 4: endsum+=30;
case 5: endsum+=31;
case 6: endsum+=30;
case 7: endsum+=31;
case 8: endsum+=31;
case 9: endsum+=30;
case 10: endsum+=31;
case 11: endsum+=30;
case 12: endsum+=31; break;
}
endsum=(366-endsum+c);
}
else {
switch(b){
case 1: endsum+=31;
case 2: endsum+=28;
case 3: endsum+=31;
case 4: endsum+=30;
case 5: endsum+=31;
case 6: endsum+=30;
case 7: endsum+=31;
case 8: endsum+=31;
case 9: endsum+=30;
case 10: endsum+=31;
case 11: endsum+=30;
case 12: endsum+=31; break;
}
endsum=(365-endsum+c);
}
sum+=(starsum+endsum);
return sum;
}
int main(){
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
memset(bir,0,sizeof(bir));
scanf("%d-%d-%d",&bir[i].year,&bir[i].mon,&bir[i].day);
printf("%d
",dday(bir[i].year,bir[i].mon,bir[i].day));
}
return 0;
}
소인 코드(계산 18 년 매년 365 일 이상,게다가):
<span style="color:#000000;">#include "stdio.h"
int main()
{int n,i,y,m,d,sum,x;
scanf("%d",&n);
while(n--)
{ sum=0;//18 365
scanf("%d-%d-%d",&y,&m,&d);
if(m==2&&d==29)
{
printf("-1
");
continue;
}
if((y%4==0&&y%100!=0||y%400==0)&&m<3)
sum++;
x=y+18;
if((x%4==0&&x%100!=0||x%400==0)&&m>=3)
sum++;
for(i=y+1;i<y+18;i++)
if(i%4==0&&i%100!=0||i%400==0)
sum++;
printf("%d
",365*18+sum);
}
return 0;
}</span>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.