Codeforces 916-A

A. Jamie and Alarm Snooze
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
Jamie loves sleeping. One day, he decides that he needs to wake up at exactly hh: mm. However, he hates waking up, so he wants to make waking up less painful by setting the alarm at a lucky time. He will then press the snooze button every x minutes until hh: mm is reached, and only then he will wake up. He wants to know what is the smallest number of times he needs to press the snooze button.

A time is considered lucky if it contains a digit ‘7’. For example, 13: 07 and 17: 27 are lucky, while 00: 48 and 21: 34 are not lucky.

Note that it is not necessary that the time set for the alarm and the wake-up time are on the same day. It is guaranteed that there is a lucky time Jamie can set so that he can wake at hh: mm.

Formally, find the smallest possible non-negative integer y such that the time representation of the time x·y minutes before hh: mm contains the digit ‘7’.

Jamie uses 24-hours clock, so after 23: 59 comes 00: 00.

Input
The first line contains a single integer x (1 ≤ x ≤ 60).

The second line contains two two-digit integers, hh and mm (00 ≤ hh ≤ 23, 00 ≤ mm ≤ 59).

Output
Print the minimum number of times he needs to press the button.

Examples
input
3
11 23
output
2
input
5
01 07
output
0
Note
In the first sample, Jamie needs to wake up at 11:23. So, he can set his alarm at 11:17. He would press the snooze button when the alarm rings at 11:17 and at 11:20.

In the second sample, Jamie can set his alarm at exactly at 01:07 which is lucky.

#include<bits/stdc++.h>
using namespace std;
bool check(int h,int m,int x){//判断当前时间是否符合要求
    if(h%10==7||m%10==7){
        return false;
    }   
    else return true;
}
int main(){
    int m,h,x;
    while(scanf("%d%d%d",&x,&h,&m)!=EOF){
        int num=0;//记录往前推进的次数
        while(check(h,m,x)){//开始枚举
        //如果不符合要求就更新时间,符合要求就跳出
            if(m<x){//如果需要向前借位
                h--;//小时数减一借给分钟数60
                m+=60;
            }
            if(h<0){//如果小时数小于一,说明往前推了一天
                h+=24;//更新小时数
            }
            m-=x;//每次向前推x分钟
            num++;//记录推进的次数
        }
        cout<<num<<endl;
    }   
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值