// demo.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
const int mdays[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
bool GetDateFormat(string date, int& year, int& month, int& day) {
istringstream str(date);
string temp = "0";
int cnt = 0;
while (getline(str, temp, '-'))
{
int d = atoi(temp.c_str());
if (cnt == 0 && d >=1) {
year = d;
++cnt;
continue;
}
if (cnt == 1 && d >= 1 && d <= 12) {
month = d;
++cnt;
continue;
}
if (cnt == 2 && d >= 1 && d <= 31) {
day = d;
++cnt;
break;
}
if (cnt != 3)break;
}
return cnt == 3;
}
bool isLeepYear(int year) {
if ((year % 400) == 0)return true;
if ((year % 4) != 0)return false;
if ((year % 100) == 0)return false;
return true;
}
int MonthOfDays(int year, int month, int day) {
int days = day;
int m = month - 1;
for (int i = 0; i < m; ++i)
{
days += mdays[i];
}
if (month >= 3 &&isLeepYear(year)) {
days += 1;
}
return days;
}
int GetDays(string date) {
int year = 0, month = 0, day = 0;
bool isOk = GetDateFormat(date, year, month, day);
if (isOk == false)return -1;
return MonthOfDays(year, month, day);
}
int main()
{
string date = "400-1-2";
cout << GetDays(date);
}