1 条题解

  • 0
    @ 2025-8-24 21:17:45

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar ikunTLE
    互关条件见主页(luogu.me/paste/1ij66blw),关注我可以获得我小号 OIerDb 的关注(需私信) || 最后在线时间:2025年8月24日21时17分

    搬运于2025-08-24 21:17:44,当前版本为作者最后更新于2025-02-08 00:00:52,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目传送门

    思路

    可以以分钟为单位进行枚举

    枚举起点为 T=(h×60+m+1)modDT=(h\times60+m+1)\bmod D,每一次向后增加 11 分钟 T(T+1)modDT\gets(T+1)\bmod D。其中 DD 为常数,值为 D=24×60D=24\times60,代表一天的分钟数量。判断回文时再将 TT 拆开,令 X=T60X=\lfloor\frac{T}{60}\rfloorY=Tmod60Y=T\bmod60,即为当前的点数。如果满足 X10=Ymod10\lfloor\frac{X}{10}\rfloor=Y\bmod10Xmod10=Y10X\bmod10=\lfloor\frac{Y}{10}\rfloor,则日期 X:Y\texttt{X:Y} 回文,输出即可。

    AC CODE

    #include<bits/stdc++.h>
    using namespace std;
    int read(){int x=0;char f=1,ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
    const int D=24*60;
    int main(){
    	int a=read(),b=read();
    	for(int t=(a*60+b+1)%D;;t=(t+1)%D){
    		int x=t/60,y=t%60;
    		if(x/10==y%10&&x%10==y/10)
    			return printf("%02d:%02d\n",x,y),0;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    11621
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者