#include <iostream>
using namespace std;
bool isLeapYear(int y)
{
return y % 400 == 0 || (y % 4 == 0 && y % 100 != 0);
}
int main(int argc, char const *argv[])
{
std::ios::sync_with_stdio(false);
int days[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
int year, day;
cin >> year >> day;
int m = isLeapYear(year);
int sum_day = 0, i = 0;
for (; sum_day < day; i++)
{
sum_day += days[m][i];
}
sum_day -= days[m][i - 1];
cout << i << endl
<< day - sum_day;
return 0;
}
改进:
#include <iostream>
using namespace std;
bool leapYear(int y)
{
return y % 400 == 0 || (y % 4 == 0 && y % 100 != 0);
}
int main(int argc, char const *argv[])
{
std::ios::sync_with_stdio(false);
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, day;
cin >> year >> day;
days[1] += leapYear(year);
int sum_day = 0, i = 0;
for (; sum_day < day; i++)
{
sum_day += days[i];
}
sum_day -= days[i - 1];
cout << i << endl
<< day - sum_day;
return 0;
}