题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#define _CRT_SECURE_NO_WARNINGS //很简单的思路,代码比较粗糙,我居然搞反了闰年和平年的天数,弄了半天,服了 #include <iostream> #include <string> #include <stdlib.h> using namespace std; int day(string data) { return atoi(data.substr(6,2).c_str()); } int month(string data) { return atoi(data.substr(4, 2).c_str()); } int year(string data) { return atoi(data.substr(0, 4).c_str()); } int yearday(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { return 366; } else { return 365; } } int main() { int days[] = { 31, 29 , 31 ,30 , 31, 30 , 31, 31, 30, 31, 30, 31 }; int i, res = 0; string data1; string data2; while (cin >> data1) { cin >> data2; int day1 = day(data1); int day2 = day(data2); int month1 = month(data1); int month2 = month(data2); int year1 = year(data1); int year2 = year(data2); if ((year2 % 4 == 0 && year2 % 100 !=0) || year2 % 400 == 0){ days[1] = 29; } else { days[1] = 28; } for (i = month1-1; i < month2-1; i++) { res += days[i]; } for (i = year1; i < year2; i++) { res += yearday(i); } res = res + day2 - day1 + 1; cout << res << endl; } } // 64 位输出请用 printf("%lld")