-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path33_DayOfProgrammer.cpp
67 lines (55 loc) · 1.3 KB
/
33_DayOfProgrammer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// solved by Techie Dheeraj
// https://www.hackerrank.com/challenges/day-of-the-programmer/problem
int month [15] = { 0 };
void intializeMonths() {
month[1] = 31;
month[2] = 28;
month[3] = 31;
month[4] = 30;
month[5] = 31;
month[6] = 30;
month[7] = 31;
month[8] = 31;
month[9] = 30;
month[10] = 31;
month[11] = 30;
month[12] = 31;
}
void forleapYear(int y, int m) {
if (y <= 1917) { // julian calender
if (y % 4 == 0) {
month[m] = 29;
}
else
month[m] = 28;
}
else if (y == 1918)
month[m] = 15;
else {
if (y % 400 == 0)
month[m] = 29;
else if ((y % 4 == 0) && (y % 100) != 0)
month[m] = 29;
else
month[m] = 28;
}
}
// Complete the dayOfProgrammer function below.
string dayOfProgrammer(int year) {
int programmerDay = 256;
int days;
int mon = 0;
int day = 0;
string date;
intializeMonths();
for (mon = 1; mon <= 8; ++mon) { // Till 9 becaue 256th day will be reached
if (mon == 2)
forleapYear(year, mon);
days += month[mon];
}
day = (programmerDay - days);
date += to_string(day) + ".0";
date += to_string(mon) + ".";
date += to_string(year);
return date;
}