다른 날짜 조작 문제 : P
직무
사용자가 제공 한 두 날짜의 차이를 계산하는 프로그램이나 함수를 작성하십시오.
입출력
이전 입력과 유사하게 입력은 YYYYMMDD공백 , 쉼표 ,또는 빼기 부호 로 구분 된 두 개의 입력 -입니다.
입력 값의 예 :
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
출력은 정수이며, 두 날짜 사이의 차이 (일)입니다.
예를 들어, input 20110101-20100101yields 365및 33320229 17000101yields 596124입니다.
결과를 테스트 할 수 있습니다 여기에 여기에 . (아래의 rintaun의 의견을 참조하십시오.) 두 날짜가 동일 0하면 날짜가 유효하면 프로그램에서을 반환해야합니다 ( 점수 참조 ).
제한
물론, 당신은 해야한다 사용하지 어떤 / ... 타임 스탬프 또는 날짜에 관련된 기능 / 클래스의 종류, 당신은 사용해야 그레고리력을 .
점수
코드가 제한을 유지하지 않으면 score = -∞.
기본값 bonus은 1입니다.
- 코드 (예, 대한 입력 순서에 관계없이 작동하는 경우
20100101,20110101반환365또는-365)bonus+=1. - 코드가 처리 할 수있는 경우 0 년 ,
bonus+=0.5. - 코드가 / 날짜 (1 ~ 12 사이)와 같은, (1 ~ 31 일 사이에) 유효하지 않은 달을 인식하는 경우
20109901나34720132, 및 인쇄E(같은 프로그램이나 반환 뭔가를 종료0)bonus+=1. - 에 관계없이 위의 규칙, 코드가 유효하지 않은 날짜, 같은 인식하는지
20100230,20100229또는20111131, 및 인쇄E(같은 프로그램이나 반환 뭔가를 종료를0)bonus+=1. - 에 관계없이 두 가지 규칙 위의 코드가 같은 잘못된 입력 문자열을 인식하는 경우
20100101|20100202나2010010120100202, 및 인쇄E(같은 프로그램이나 반환 뭔가를 종료0)bonus+=1.
score = floor(-4.2*code.length/bonus). 가장 높은 점수를 얻은 코드가 승리합니다. 두 개의 최상위 코드의 점수가 같으면 보너스가 가장 높은 코드가 승리합니다. 두 개의 최상위 코드가 동일한 점수와 보너스를 모두 가진 경우, 가장 높은 표를 얻은 코드가 승리합니다.
(사유 : +1투표 수가 5 이상인 코드가있는 경우 )
20040229. : P
365*4 + 2 + 2= 1464. 정보 주셔서 감사합니다!