文章
1
粉丝
0
获赞
4
访问
360
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
int isleapyear(int year){
if((year%4==0&&year%100!=0)||(year%400==0)) return 1;
else return 0;
}
ll jiange_day(int y1,int y2){
int count=0;
for(int i=y1+1;i<y2;i++)
if(isleapyear(i)==1)
count++;
return (y2-y1-1)*365+count;
}
ll count_day(int year,int month,int day){
int months[13]={31,28,31,30,31,30,31,31,30,31,30,31};
if(isleapyear(year)==1) months[1]=29;
ll sum=0;
for(int i=0;i<month;i++)
sum+=months[i];
sum+=day;
return sum;
}
int main(){
string s;
getline(cin,s);
int y2=stoi(s.substr(0,4));
int m2=stoi(s.substr(4,2));
int d2=stoi(s.substr(6));
int y1=2019,m1=2,d1=5;
if(y1<=y2){
ll sum1=count_day(y1,m1,d1);
ll sum2=count_day(y2,m2,d2);
if(y1==y2)
cout<<sum2-sum1;
else{
ll total_day=(365-sum1)+jiange_day(y1,y2)+sum2;
cout<<total_day;
}
}
else{
ll sum1=count_day(y2,m2,d2);
ll sum2=co...
登录后发布评论
1. count_day 函数存在问题
在 count_day 函数里,for 循环的范围有误。当前代码 for(int i = 0; i < month; i++) 会把当前月份也计算在内,然而实际上我们只需要计算到当前月份的前一个月。
2. 跨年计算时逻辑存在漏洞
在跨年计算时,逻辑处理不够周全,特别是在处理闰年时,没有考虑到不同年份中具体日期的影响。
修正后的代码
有佬可以帮我看看哪错了吗