社区讨论
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 条回复,欢迎继续交流。
正在加载回复...