社区讨论

20,求助!!!

P11002[蓝桥杯 2024 省 Python B] 神奇闹钟参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m0c33hlh
此快照首次捕获于
2024/08/27 15:06
2 年前
此快照最后确认于
2024/08/27 15:15
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll diy(ll year)
{
	if((year%4 == 0 && year%100 != 0)||(year%400 == 0)) return 366;
	else return 365;
}////返回指定年份的天数 

bool isLeapYear(ll year) 
{
	return (year%4 == 0 && year%100 != 0)||(year%400 == 0);
}//判断指定年份是否为闰年

int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		
		ll y,M,d,h,m,s,x;
		char c1,c2,c3,c4;
		cin>>y;cin>>c1;cin>>M;cin>>c2;cin>>d;
		cin>>h;cin>>c3;cin>>m;cin>>c4;cin>>s;
		cin>>x;//输入部分 
		
		ll td=0,tm=0;
		for(ll i=1970;i<=y;i++)  td+=diy(i);
		tm = td * 24 * 60  + h * 60  + m;//计算从初始日期到输入日期的总天数 
		
		ll fx=tm%x;
		if(x<=fx) h+=x/60,m+=x%60;
		else h-=fx/60,m-=fx%60;//计算最靠近的闹铃时间 
		
		if(m>=60) h-=(m/60),m%=60;
		if(h>=24) d++,h=0;
		if(d>=28)
		{
			if(M==2&&ily(y)==false) M++,d%=28;
			else if(d>29&&M==2&&ily(y)==true) M++,d%=29;
			else if((d>30&&M%2==0&&M<=7)||(d>=30&&M%2!=0&&M>=8)) M++,d%=30;
			else if(d>31) M++,d%=31;
		}
		if(M>12) y++,M%=12;//处理成正确日期
		
		cout<<(y < 1000 ? "0" : "")<<(y < 100 ? "0" : "")<<(y < 10 ? "0" : "")<<y<<"-"<<(M < 10 ? "0" : "")<<M<<"-"<<(d < 10 ? "0" : "")<<d<<" "<<(h < 10 ? "0" : "")<<h<<":"<<(m < 10 ? "0" : "")<<m<<":00\n";//输出部分
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...