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
#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;
}
3 11 23output
2input
5 01 07output
0NoteIn 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;
}
相关文章推荐
- CodeForces 706B Interesting drink (二分查找)
- Codeforces 632F Magic Matrix 题解
- 第八周codeforces 853A
- codeforces 333B - Chips
- codeforces 544D Destroying Roads (最短路)
- CodeForces 706C Hard problem (水DP)
- codeforces 812C——Sagheer and Nubian Market(二分)
- Codeforces 876E National Property
- codeforces 13A. Numbers
- codeforces 550B Preparing Olympiad(枚举)
- 【字典树】【贪心】Codeforces 706D Vasiliy's Multiset
- Codeforces 365C Matrix 暴力
- 【Codeforces441E】Valera and Number [DP]
- codeforces 328A. IQ Test
- Codeforces 556B Case of Fake Numbers 数字转盘
- Codeforces 706c dp
- Educational Codeforces Round 21 Problem D(Codeforces 808D)
- DP训练 codeforces 372C Watching Fireworks is Fun [单调队列优化dp]
- Codeforces 解题报告索引
- codeforces 310 div1