1 条题解
-
0
自动搬运
来自洛谷,原作者为

L_zaa_L
And in case i don't see you,good afternoon,good evening,and good night搬运于
2025-08-24 22:21:14,当前版本为作者最后更新于2022-08-11 14:02:51,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
分析
这道题题意十分简单,就是求什么时候这两个数相等。毕竟只算一周的时间,所以最多就只有 种情况,暴力完全可以。
就从发现的时候开始模拟,哪个时间小,就寻找下一次出现的时间,知道两个数相等即可。
Code
#include<bits/stdc++.h> using namespace std; int fh1,fm1,fh2,fm2,jh1,jm1,jh2,jm2; string s[10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};//每个星期的英文 int main(){ //freopen("star.in","r",stdin); //freopen("star.out","w",stdout); scanf("%d:%d",&fh1,&fm1); scanf("%d:%d",&fh2,&fm2); scanf("%d:%d",&jh1,&jm1); scanf("%d:%d",&jh2,&jm2);//输入 int t1,t2,j1,j2; t1=fh1*60+fm1;//计算第一颗星星出现的时间 t2=fh2*60+fm2;//计算第二颗星星出现的时间 j1=jh1*60+jm1;//计算第一颗星星出现的间隔 j2=jh2*60+jm2; //计算第一颗星星出现的间隔 bool flag=0; for(int i=1;i<=10080;i++){//只用模拟这么多遍,毕竟只有那么多情况。 if(t1==t2){//如果两个数相等,就退出 flag=1;//标记,看有没有重合过 break; } else if(t1<t2) t1+=j1; else t2+=j2;//算下一次闪烁的时间 } if(!flag){ cout<<"Never"; return 0; } cout<<s[t1/1440%7]<<endl;//输出星期 if(t1%1440/60<10)//要判断要不要零 cout<<0; cout<<t1%1440/60<<":"; if(t1%60<10) cout<<0;//同上 cout<<t1%60; return 0; }
- 1
信息
- ID
- 5509
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者