蒟蒻求教
  • 板块灌水区
  • 楼主ZZ_peng09
  • 当前回复8
  • 已保存回复8
  • 发布时间2020/6/2 17:28
  • 上次更新2023/11/7 01:16:59
查看原帖
蒟蒻求教
341858
ZZ_peng09楼主2020/6/2 17:28

网址

#include<bits/stdc++.h>
using namespace std;
int dc[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
bool rn(int year);
int one(int yo,int mo,int dao);
int two(int mt);
int two2(int mt1,int mt2);
int three(int yt,int yt2);
int four(int yf,int mf,int df);

int main(){
	int y1,m1,d1,y2,m2,d2;
	int dat=0;
	cin>>y1>>m1>>d1>>y2>>m2>>d2;
	/*思路:
		1.计算本月天数
		2.计算本年剩余天数 
		3.计算间隔年天数
		4.计算结束年已有天数
		5.相加
		*/	
	if(y1==y2){
		dat+=one(y1,m1,d1);
		dat+=d2;
		if(m1!=m2){
			dat+=one(y1,m1,d1);
			dat+=two2(m1,m2); 
		        dat+=d2;
		}else{  
                        if(d1==d2) dat=1;
                        else{
                            dat=d2-d1+1;
                        }
		}
	}else{
		dat+=one(y1,m1,d1);
		dat+=two(m1);
		dat+=three(y1,y2);
		dat+=four(y2,m2,d2);
	}

    cout<<dat-1;
	return 0;
}

bool rn(int year){
	if(year%4!=0) return false;
	else{
		if(year%100!=0) return true;
		else{
			if(year%400!=0) return false;
			else return true;
		}
	}	
}
int one(int yo,int mo,int dao){
	if(rn(yo)) dc[2]=29; 
	else dc[2]=28;
	return dc[mo]-dao+1;
}
int two(int mt){
	int datt=0;
	for(int i=mt+1;i<=12;i++) datt+=dc[i];
	return datt;	
}
int two2(int mt1,int mt2){
	int datt=0;
	for(int i=mt1+1;i<mt2;i++) datt+=dc[i];
	return datt;		
}
int three(int yt,int yt2){
	int datt=0;
	for(int i=yt+1;i<yt2;i++){
		datt+=365;
		if(rn(i)) datt+=1;
	}
	return datt;
}
int four(int yf,int mf,int df){
	int datt=0;
	if(rn(yf)) dc[2]=29; 
	else dc[2]=28;
	for(int i=1;i<mf;i++){
		datt+=dc[i];
	}
	return datt+=df;	
}

一直有九分,从未被超越!

2020/6/2 17:28
加载中...