Ngày của lập trình viên (Day of the Programmer)

Marie đã phát minh ra cỗ máy thời gian và muốn thử nghiệm nó bằng cách du hành thời gian đến thăm Nga vào Ngày lập trình viên (ngày thứ 256 của năm) trong một năm trong phạm vi bao gồm từ 1700 đến 2700

 từ 1700 đến 1917 Lịch chính thức của Nga là lịch Julian; kể từ khi 1919 họ đã sử dụng hệ thống lịch Gregorian. Sự chuyển đổi từ hệ thống lịch Julian sang Gregorian xảy ra trong 1918 . khi ngày tiếp theo sau tháng một ngày 31 là tháng hai ngày 14. Điều này có nghĩa là trong năm 1918 Tháng hai là 14 là ngày thứ 32 của năm theo lịch Nga.

Trong cả  hệ thống lịch, tháng 2 là số lượng ngày thay đổi, nó có 29 ngày trong một năm nhuận, và 28 ngày trong tất cả các năm khác. Trong lịch Julian, năm nhuận chia hết cho 4. trong lịch Gregorian, năm nhuận là một trong những điều sau đây:

Chia hết cho 400
Chia hết cho 4 nhưng không Chia hết cho 100

Cho một năm y tìm ngày thứ 256 ngày của năm đó theo lịch chính thức của Nga trong năm đó. Sau đó in nó ở định dạng dd.mm.yyyy, trong đó dd là ngày có hai chữ số, mm là tháng có hai chữ số và yyyy là y

Ví dụ, đã cho year = 1984 . chia hết cho 4 vì vậy nó là một năm nhuận Các 256 ngày của một năm nhuận sau 1918 là ngày 12 tháng 9, vì vậy câu trả lời là 12.09.1984

Mô tả chức năng
Hoàn thành chức năng dayOfProgrammer trong trình chỉnh sửa bên dưới. Nó sẽ trả về một chuỗi đại diện cho ngày của 256 ngày trong năm đưa ra.

dayOfProgrammer có (các) tham số sau:
năm: một số nguyên

Định dạng đầu vào
Một số nguyên biểu thị năm y

Những ràng buộc
1700 <= y <= 2700

Định dạng đầu ra
In toàn bộ ngày của Lập trình viên trong năm y trong định dạng dd.mm.yyyy, trong đó dd là ngày có hai chữ số, mm là tháng có hai chữ số và yyyy là y

Nhập mẫu 0
2017

Kết quả mẫu 0
13.9.2017

Giải thích 0
Trong năm y = 2017 Tháng giêng có 31 ngày Tháng hai có 28 ngày Tháng ba có 31 ngày Tháng tư có 30 ngày . Thâng 5 có 31 ngày. Tháng sáu có 30 ngày . Tháng 7 có 31 ngày và tháng 8 có 31 ngày. Khi chúng tôi tổng hợp tổng số ngày trong tám tháng đầu tiên, chúng tôi nhận được 31 + 28 + 31 + 30 + 31 + 31 = 243 Ngày lập trình viên là ngày thứ 256 vậy thì tính 256  243 = 13 để xác định rằng nó rơi vào ngày 13 của 9 tháng (tháng 9). Sau đó chúng tôi sẽ in ngày đầy đủ theo định dạng được chỉ định, đó là ngày 13/9/2017.

Đầu vào mẫu 1
2016

Kết quả mẫu 1
12.09.2016

Giải thích 1
Năm y = 2016 là một năm nhuận, vì vậy tháng hai có 29 ngày nhưng tất cả các tháng khác có cùng số ngày như trong 2017. Khi chúng tôi tổng hợp tổng số ngày trong tám tháng đầu tiên, chúng tôi nhận được 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 = 244 Ngày lập trình viên là 256. vậy thì tính 256 - 244 = 12 để xác định rằng nó rơi vào ngày 12 của 9 tháng (tháng 9) Sau đó chúng tôi sẽ in ngày đầy đủ theo định dạng được chỉ định, đó là ngày 12/9/2016.

Đầu vào mẫu 1
2016

Kết quả mẫu 1
12.09.2016

Giải thích 1
Năm y=2016 là một năm nhuận, vì vậy tháng hai có 29 ngày ngày nhưng tất cả các tháng khác có cùng số ngày như trong 2017. Khi chúng tôi tổng hợp tổng số ngày trong tám tháng đầu tiên, chúng tôi nhận được 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 = 244 Ngày lập trình viên là 256. vậy thì tính 256 - 244 = 12 . để xác định rằng nó rơi vào ngày 12 của 9 tháng (Tháng Chín). Sau đó chúng tôi sẽ in ngày đầy đủ theo định dạng được chỉ định, đó là ngày 12/9/2016

Đầu vào mẫu 2
1800

Kết quả mẫu 2
12,09.1800

Giải thích 2
Vì năm 1800 là năm nhuận. Ngày nằm vào ngày 12 tháng 9.

 php

<?php
// Complete the dayOfProgrammer function below.
function dayOfProgrammer($year) {
if($year <1918 && $year%400!=0 && $year%100==0 ) {
$date=date_create($year.'-01-01');
date_add($date,date_interval_create_from_date_string("254 days"));
return date_format($date,"d.m.Y");
} else if($year == 1918) {
$date=date_create($year.'-01-01');
date_add($date,date_interval_create_from_date_string("268 days"));
return date_format($date,"d.m.Y");
} else {
$date=date_create($year.'-01-01');
date_add($date,date_interval_create_from_date_string("255 days"));
return date_format($date,"d.m.Y");
}
}

$fptr = fopen(getenv("OUTPUT_PATH"), "w");

$year = intval(trim(fgets(STDIN)));

$result = dayOfProgrammer($year);

fwrite($fptr, $result . "\n");

fclose($fptr);








Comments

Popular posts from this blog

Intro to Tutorial Challenges

Strong Password