控制结构(强化):8.懒惰的松雅

【问题描述】

      松雅喜欢睡懒觉,有一天,她必须在 hh:mm 的时间起来去跟她的合伙人讨论新开旅馆的事情。然而,她讨厌醒来,她希望在一个幸运时间设置一个闹钟以减少痛苦,这样她可以反复按“小睡一会儿”按钮,该按钮每次可延迟 x 分钟,直到 hh:mm 这个时间醒来,她想知道最少需要按多少次这个按钮。

      如果一个时间的数字中包含'7',则她认为是幸运时间,例如:13:07和17:20是幸运的,而00:48和21:34不是。

      注意,设置闹钟的时间与醒来的时间不一定在同一天,输入保证对每个醒来时间都有一个幸运时间。

      正常地,可以找到一个最小的非负整数 y 使得在时间 hh:mm 之前的 y*x 分钟是一个幸运时间,即包含数字'7'。

      时间采用24小时制,因此在23:59之后是00:00。
【输入形式】

      输入的第一行包含一个正整数 x (1 ≤ x ≤ 60)。

      第二行包含两个整数,分别代表小时与分钟( hh:mm )。

【输出形式】

      输出一行一个整数,表示松雅需要按“小睡一会儿”按钮的最小次数。

【样例输入1】

3
11 23

【样例输出1】

2

【样例输入2】

5
1 7

【样例输出2】

0

【样例说明】

在第一个样例中,她需要在11:23分醒来,她可以设置闹钟的幸运时间为11:17,因此她需要在11:17分和11:20按两次按钮。

在第二个样例中,01:07就是幸运时间。
【评分标准】

法一:

#include<iostream>
using namespace std;
int main()
{
	int x,h,m;
	int sum=0,sum2;
	cin>>x>>h>>m;
	sum2=h*60;
	while(m/10!=7&&m%10!=7&&sum2/60!=7&&sum2/60!=17)
	{
		m-=x;
		if(m<0)
		{
			m+=60;
			h--;
		}
		sum++;
	}
	cout<<sum;
	system("pause");
	return 0;
 } 

用图一解法会超时,得不了满分,于是我参考了同学的代码并略加修改

法二:

#include<iostream>
using namespace std;
int main()
{
	int x,h,m;
	cin>>x;
	cin>>h>>m;
	int h1=h%10,h2=h/10,m1=m%10,m2=m/10; 
	int sum=0;
	while(h1!=7&&h2!=7&&m1!=7&&m2!=7)
	{
		m-=x;
		if(m<0)
		{
			m+=60;h--;
		}
		if(h<0)
		h+=24;
		h1=h%10;h2=h/10;m1=m%10;m2=m/10;
		sum++;
	}
	cout<<sum;
	system("pause");
	return 0;
 } 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一二爱上蜜桃猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值