很类似日期类,不过既然是OJ肯定不需要那么复杂,很有可能作为笔试题线上OJ,所以快、准、狠才是王道!OJ牛客华为机试在线训练计算日期到天数转换
#include <iostream>
using namespace std;
int main() {
int array[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int year;
int month;
int day;
int sum = 0;
while (cin >> year >> month >> day) {
sum = 0;
for (int i = 0; i < month - 1; i++) {
sum += array[i];
}
sum += day;
if (month > 2) {
if ((year % 4 == 0 && year % 100) || (year % 400 == 0)) {
sum += 1;
}
}
cout << sum << endl;
}
}
可以避免循环,将月份天数累计到array数组内,每次不需要再计算累计天数:
#include <iostream>
using namespace std;
int main() {
int array[] = { 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
int year;
int month;
int day;
int sum = 0;
while (cin >> year >> month >> day) {
sum = 0;
sum += array[month-2];
sum += day;
if (month > 2) {
if ((year % 4 == 0 && year % 100) || (year % 400 == 0)) {
sum += 1;
}
}
cout << sum << endl;
}
}