救援信号
  • 板块灌水区
  • 楼主lucy2012
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/12 12:00
  • 上次更新2024/7/12 13:57:22
查看原帖
救援信号
1252442
lucy2012楼主2024/7/12 12:00

生命迹象:濒危。

发送信号:救援。

事件起因:

题目描述
在宴会中,小核桃发现他的两位好朋友小B和小C在争论着什么,作为宴会的组织者,小核桃认为他有责任调解宴会中的任何纷争,于是,小核桃过去询问了他们原因。了解到他们是在过来的路上发现了一副尘封的挂历,他们想知道这副挂历上的某个时间距离现在是多少天,但是两个人并没有算出一个统一的答案,于是他们为了说服对方开始了争论。

小核桃很头疼,但是他也想不出哪个答案是正确的,于是他将目光投向了擅长编程的你,希望你能帮帮他。

输入格式
输入共两行

第一行一个字符串,格式为xxxx-xx-xx代表日历中的时间。

第二行一个字符串,格式为xxxx-xx-xx代表宴会举办的时间。

输出格式
输出共一行

一个整数,代表日历中的时间距离宴会举办时间的天数,不包括日历中时间的当天。

输入数据 1
2016-01-01
2017-01-01
输出数据 1
366
数据范围
保证时间均为合法时间,且日历中的时间要早于宴会举办的时间。

时间差不超过1000年。

附录
闰年的判断方法

1.能被4整除,但不能被100整除
2.能被400整除

事情经过(需帮助的地方):

#include<bits/stdc++.h>
using namespace std;
long long n1,n2,y_1,y2,r1,r2,sum;
int c[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
string a,b;
int main(){   
    cin>>a>>b;
    for(int i=0;i<=3;i++){
    	n1=n1*10+a[i]-'0'; 
    	n2=n2*10+b[i]-'0';
	}
	for(int i=5;i<=6;i++){
		y_1=y_1*10+a[i]-'0';
		y2=y2*10+b[i]-'0';
	}
	for(int i=8;i<=9;i++){
		r1=r1*10+a[i]-'0';
		r2=r2*10+b[i]-'0';
	}
	for(int i=n1+1;i<=n2;i++){
		if((i%4==0&&i%100!=0)||i%400==0)
		    sum+=366;
		else
		    sum+=365;
	}
	if(n1==n2){
		for(int i=y_1;i<=y2;i++){
			if(((n1%4==0&&n1%100!=0)||n1%400==0)&&i!=y2&&i==2)
				sum++;
			if(y_1==y2){
				sum+=r2-r1+1;
				break;
			}
			else if(i==y_1){
				sum+=c[i]-r1+1;
				continue;
			}
			else if(i==y2){
				sum+=r2-1;
				continue;
			}
			sum+=a[i];
		}
	}else{
		if(y_1==y2)
		    sum+=r2-r1+1;
		else{
			for(int i=y_1;i<=12;i++){
				sum+=c[i];
				if(((n1%4==0&&n1%100!=0)||n1%400==0)&&i==2)
				    sum++;
			}
			for(int i=1;i<y2;i++) {
				sum+=c[i];
				if(((n1%4==0&&n1%100!=0)||n1%400==0)&&i==2)
				    sum++;
			}
			sum=sum-r1+1;
		    sum+=r2-1;
		}
	}
	cout<<sum;
	return 0;
}

提示:请及时救援

2024/7/12 12:00
加载中...