描述大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方他从不注明年月日而是用一个整数代替比如:4210后来人们知道那个整数就是日期它表示那一天是高斯出生后的第几天。这或许也是个好习惯它时时刻刻提醒着主人:日子又过去一天还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343因此可算出那天是:1791年12月15日。高斯获得博
#include
bool isLeapYear(int year) { if (year % 4 == 0 && year % 100 != 0) { return true; } if (year % 400 == 0) { return true; } return false; }
string calculateDate(int days) { int year = 1777; int month = 4; int day = 30;
while (days > 0) {
int numDaysInMonth = 0;
if (month == 2) {
if (isLeapYear(year)) {
numDaysInMonth = 29;
} else {
numDaysInMonth = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
numDaysInMonth = 30;
} else {
numDaysInMonth = 31;
}
if (days > numDaysInMonth) {
days -= numDaysInMonth;
month += 1;
if (month > 12) {
month = 1;
year += 1;
}
} else {
day += days;
if (day > numDaysInMonth) {
day -= numDaysInMonth;
month += 1;
if (month > 12) {
month = 1;
year += 1;
}
}
days = 0;
}
}
string date = to_string(year) + "-";
if (month < 10) {
date += "0";
}
date += to_string(month) + "-";
if (day < 10) {
date += "0";
}
date += to_string(day);
return date;
}
int main() { int days; cin >> days;
string date = calculateDate(days);
cout << date << endl;
return 0;
}
原文地址: http://www.cveoy.top/t/topic/jauk 著作权归作者所有。请勿转载和采集!