CF1493B Planet Lapituletti 题解

题目链接

题意

星球的一天有 $h$ 小时,每小时有 $m$ 分钟。现在给定一个当前时间,询问最近的在镜中对称之后合法的时间。

解析

主要是注意一些细节。首先判断最近的对称过去合法的小时,如果给出的时间的小时本身对称过去就是合法的,那么分钟就要从给出的分钟开始找,一直找到第一个合法的。否则,如果小时与给定的不一致,分钟就一定为 $0$,即输出一定为 XX:00。特别的,如果开始的小时就合法,分钟又找到结尾都找不到,那么分钟就只能取 $0$,这时我们发现原先确定的小时配上分钟就不合法了,因此需要将小时加一之后再重新找一次,同样的,找不到取 $0$ 即可。

代码中会写一些注释,帮助理解。

代码

#include<bits/stdc++.h>
using namespace std;
int t,H,M,h,m;
int ansh,ansm;
int RRef[10]={0,1,5,-1,-1,2,-1,-1,8,-1};
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&H,&M);
        scanf("%d:%d",&h,&m);
        ansh=ansm=-1;
        for(int i=h;i<H;i++){
            int a=i/10,b=i%10,now;
            if(RRef[a]==-1||RRef[b]==-1) continue;
            now=RRef[b]*10+RRef[a];
            if(now<M){//注意对称过去之后小时和分钟两者位置对调
                ansh=i;break;
            }
        }//先找最近的合法小时
        if(ansh!=h) m=0;//如果小时变了,分钟取 0 即可
        for(int i=m;i<M;i++){
            int a=i/10,b=i%10,now;  
            if(RRef[a]==-1||RRef[b]==-1) continue;
            now=RRef[b]*10+RRef[a];
            if(now<H){
                ansm=i;break;
            }
        }
        if(ansm==-1){//分钟找不到,就隐含了给定的小时合法的条件
            h++;ansh=-1;//此时原小时不合法,必须加 1
            for(int i=h;i<H;i++){
                int a=i/10,b=i%10,now;
                if(RRef[a]==-1||RRef[b]==-1) continue;
                now=RRef[b]*10+RRef[a];
                if(now<M){
                    ansh=i;break;
                }
            }
        }
        if(ansh<=0) printf("00");
        else if(ansh<10) printf("0%d",ansh);
        else printf("%d",ansh);
        printf(":");
        if(ansm<=0) printf("00");
        else if(ansm<10) printf("0%d",ansm);
        else printf("%d",ansm);
        printf("\n");//输出       
    }
    return 0;
}
本文作者:water_tomato
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇