CF916A Jamie and Alarm Snooze 题解
Content
令一个时间为幸运时间,当且仅当该时间中包含数字 \(7\)。
小 J 很懒,他决定在 \(h\) 时 \(m\) 分起床,于是他将闹钟设定在一个很幸运的时间,并通过按一次按钮以多睡 \(x\) 分钟一直睡到 \(h\) 时 \(m\) 分,现在他想知道最少需要按多少次按钮。
数据范围:\(0\leqslant h\leqslant 23,0\leqslant m\leqslant 59\)。
Solution
题目中问的其实就是距离 \(h\) 时 \(m\) 分最近的幸运时间。正着推比较难想,我们不妨从 \(h\) 时 \(m\) 分开始倒着推,每次倒退回去 \(x\) 分钟,出现的第一个幸运时间就是我们所需要的答案。
Code
int x, h, m, ans;
int check(int x, int y) {
int p = x, q = y;
while(p) {
if(p % 10 == 7) return 1;
p /= 10;
}
while(q) {
if(q % 10 == 7) return 1;
q /= 10;
}
return 0;
}
int main() {
getint(x), getint(h), getint(m);
while(1) {
if(check(h, m)) return writeint(ans), 0;
m -= x;
ans++;
if(m < 0) h--, m += 60;
if(h < 0) h += 24;
}
return 0;
}

浙公网安备 33010602011771号