思路:使用前缀和思想,要求的是从这一年的第一天到今天的差距天数,先定义一个数组,每个月多少天,然后求出这个数组的前缀和数组,这个数组的下标为n的数据就是n个月的天数和,只需要求出month-1的天数和再加上day,最后判断如果month>2,并且是闰年的话,sum再加一天。
#include<iostream>
using namespace std;
int main()
{
int year = 0;
int month = 0;
int day = 0;
cin>>year>>month>>day;
int mday[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int sumday[13] = {0};
for(int i =0;i<13;i++)
{
sumday[i] = mday[i];
if(i!=0)
{
sumday[i]+=sumday[i-1];
}
}
int sum = 0;
sum = sumday[month-1] + day;
if(month>2 && ((year%4==0)&&(year%100!=0)||(year%400==0)))
sum+=1;
cout<<sum<<endl;
return 0 ;
}