• Jamie and Alarm Snooze


    Description

    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 luckytime 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: mmcontains 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.

    Sample Input

    Input
    3
    11 23
    Output
    2
    Input
    5
    01 07
    Output
    0

    Hint

    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.

    题目意思:一个人想要在hh:mm时刻起床,而他想从在离起床时刻最近的一个带有数字7的时刻起,每x分钟按一次按钮,问一共按了多少次

    解题思路:模拟即可,注意小时与分钟间的切换。

     1 #include <iostream>
     2 #include <stdio.h>
     3 using namespace std;
     4 int main()
     5 {
     6     int n,h,m,count;
     7     while(scanf("%d%d%d",&n,&h,&m)!=EOF)
     8     {
     9         count=0;
    10         while(1)
    11         {
    12             if(h==17||h==7||m%10==7)
    13             {
    14                 break;
    15             }
    16             else
    17             {
    18                 count++;
    19                 m=m-n;
    20                 if(m<0)
    21                 {
    22                     m=m+60;
    23                     h--;
    24                 }
    25                 if(h<0)
    26                 {
    27                     h=h+24;
    28                 }
    29             }
    30         }
    31         printf("%d
    ",count);
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    JavaOOP对象和封装
    使用socket实现文件复制
    多线程模拟银行取款
    初入多线程示例展示--Runner
    初步学习多线程3
    初步学习多线程2
    初步线程学习1
    守护线程_setDaemon()
    多线程_yield()和sleep()方法比较
    java_多线程_优先级
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/9089159.html
Copyright © 2020-2023  润新知