午睡时间-C++

博主洛谷粉丝团​:https://www.luogu.com.cn/team/87178

题目网址-博主原创

https://hydro.ac/d/Cyb888/p/T428809

题目-午睡时间

题目背景

凯伦正在为新的下午做准备!

题目描述

目前的时间是hh:mm,以24小时格式给出。正如你所知,凯伦喜欢回文,她相信当时间是回文的时候醒来是好运。
她应该至少睡几分钟,这样当她醒来时,时间就是回文了?
记住,回文是一个前后读相同内容的字符串。例如,05:39不是回文,因为05:39向后是93:50。另一方面,05:50是回文,因为05:50向后是05:50。

输入格式

仅有一行,包含一个格式为hh:mm的字符串( 00 ≤ h h ≤ 23 , 00 ≤ m m ≤ 59 00≤hh≤23, 00≤mm≤59 00hh23,00mm59

输出格式

仅输出一行一个整数,表示要使她醒来时的时间是回文,她所睡的最少时间。

样例 #1

样例输入 #1

05:39

样例输出 #1

11

提示

110个测试点!请慎重!

有110个测试点-但大家不用害怕

先分析题目

可以用数学直接搞定-就是一个数学题
直接上代码

解法1-利用字符串

#include <bits/stdc++.h>
using namespace std;
string s;
long long ans;
string r(string n)
{
    string k="";
    for (int i=n.size()-1;i>=0;i--) k+=n[i];
    return k;
}
int main(){
    cin>>s;
    while (s!=r(s))
    {
        s[4]++;
        if (s[4]>'9') s[4]='0',s[3]++;
        if (s[3]>='6') s[3]=s[4]='0',s[1]++;
        if (s[1]>'9') s[1]='0',s[0]++;
        if (s[0]=='2'&&s[1]=='4') s[0]='0',s[1]='0';
        ans++;
    }
    cout<<ans;
    return 0;
}

解法2-直接上数学

#include<iostream>
#include<cmath>
using namespace std;
int main() {
	int a, h, m, m1, m2, h1, h2, b=1, c=0;
		scanf("%d:%d", &h, &m);
		for (a = 0; c != b; a++) {

			m1 = m % 10;
			m2 = m / 10;
			h1 = h % 10;
			h2 = h / 10;
			c = h * 100 + m;
			b = m1 * 1000 + m2 * 100 + h1 * 10 + h2;
			m = m + 1;
			if (m == 60) {
				h++;
				m = 0;
			}
			if (h == 24) h = 0 ;

		}
		a = a - 1;
		cout << a;

	return 0;
}

大家看懂了请点赞,不懂欢迎私信哦

请大家支持一下博主哦!

大家点个赞再走

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值