⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1263.cpp

📁 ZOJ 动态规划算法题目入门与提高 源代码
💻 CPP
字号:
#include<iostream>
#include<string>
using namespace std;
class data{
public:
	int y,m,d,h,f,s;
	data(){}
};
bool nv(int y){
    return (y%4==0);
}
int mdata(const data & a,int m){
    switch (m){
	case 1: return 31;
	case 2: {if(nv(a.y)) return 29; else return 28;}
    case 3: return 31;
	case 4: return 30;
	case 5: return 31;
	case 6: return 30;
	case 7: return 31;
	case 8: return 31;
	case 9: return 30;
	case 10: return 31;
	case 11: return 30;
	case 12: return 31;
	}
}
int gobacktoyear(const data & a){
	int res=0;
	for(int i=1;i<a.m;i++){
        res+=mdata(a,i);
	}
	res+=a.d;
	res*=(3600*24);
	res+=a.h*3600+a.f*60+a.s;
	return res;
}
void run(const data & a,const data & b,int div){
    int aa=gobacktoyear(a),bb=gobacktoyear(b),day=0;
	for(int i=a.y;i<b.y;i++){
       if(nv(i)) day+=366;
	   else day+=365;
	}
	day*=(3600*24);
	day=day-aa+bb;
	int res=day/div;
	if(res<0) res=0;
	cout<<res<<endl;
}
int main(){
	data a,b;
	string s;
	int div;
	while(cin>>a.y>>a.m>>a.d>>a.h>>a.f>>a.s>>b.y>>b.m>>b.d>>b.h>>b.f>>b.s>>div>>s){
	   if(s!="month"&&s!="year"){
		 if(s=="minute") {
			 div*=60;
			 if(a.s!=0) {a.s=0;a.f+=1;}
             if(b.s!=0) b.s=0;
		 }
		 else if(s=="hour") {
			 div*=3600;
             if(a.f!=0||a.s!=0) {a.s=a.f=0;a.h+=1;}
			 if(b.f!=0||b.s!=0) {b.s=b.f=0;}
		 }
		 else if(s=="day")  {
			 div*=(3600*24);
             if(a.h!=0||a.f!=0||a.s!=0) {a.h=a.s=a.f=0;a.d+=1;}
			 if(b.h!=0||b.f!=0||b.s!=0) {b.h=b.s=b.f=0;}
		 }
		 run(a,b,div);
	   }
	   else if(s=="year"){
             if(a.m!=1||a.d!=1||a.h!=0||a.f!=0||a.s!=0) a.y+=1;
			 int res=b.y-a.y;
			 if(res<0) res=0;
			 cout<<res/div<<endl;
	   }
	   else if(s=="month"){
             if(a.d!=1||a.h!=0||a.f!=0||a.s!=0) a.m+=1;
			 if(a.m>12) {a.m=1;a.y+=1;}
             int res=(b.y-a.y)*12+b.m-a.m;
			 if(res<0) res=0;
			 cout<<res/div<<endl;
	   }
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -