您的位置:首页 > 其它

Codeforces 916A Jamie and Alarm Snooze

2018-02-11 09:41 246 查看
A. Jamie and Alarm SnoozeJamie 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: mmcontains the digit '7'.Jamie uses 24-hours clock, so after 23: 59 comes 00: 00.InputThe 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).OutputPrint the minimum number of times he needs to press the button.Examplesinput
3
11 23
output
2
input
5
01 07
output
0
NoteIn 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.题意:以当前给定的小时和分钟,往前倒退,每次退x分钟,问你最少退几次可以让小时或分钟包含数字7。思路:找到重点思路就不乱了,重点处理分钟,无限循环递减分钟,小时伴随着减一就行了。#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b,x;
string s;
stringstream sst;
int main()
{
while(~scanf("%lld%lld%lld",&x,&a,&b))
{
ll flag=0,ans=0;
while(1)
{
sst<<a;sst>>s;sst.clear();
if(s.find('7')!=string::npos){flag=1;break;}
while(b>=0)
{
sst<<b;sst>>s;sst.clear();
if(s.find('7')!=string::npos){flag=1;break;}
b-=x;
ans++;
}
if(flag==1)break;
b+=60;
a--;
if(a==-1)a=23;
sst<<b;sst>>s;sst.clear();
if(s.find('7')!=string::npos){flag=1;break;}
}
printf("%lld\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: