CF113E Sleeping

题目描述

有一天,Vasya 躺在床上,为了更快入睡,他盯着电子钟看。 Vasya 生活在一个奇怪的国家,这里的每一天有 $h$ 个小时,每个小时有 $m$ 分钟。时钟以十进制的方式显示时间,格式为 H:M,其中字符串 H 的长度总是等于 $h-1$ 的十进制表示的位数。为此,如果需要会在前面补零。字符串 M 也采用类似的格式,其长度总是等于 $m-1$ 的十进制表示的位数。例如,如果 $h=17$,$m=1000$,那么 13 小时 75 分钟会显示为 "13:075"。 Vasya 从 $h_1$ 时 $m_1$ 分开始看钟,一直到 $h_2$ 时 $m_2$ 分(包括这个时刻),然后他就睡着了。现在他想知道,在他观看的这段时间里,有多少次他看到时钟上至少有 $k$ 个数字同时发生变化。 例如,从 04:19 变为 04:20 时,有两个数字发生了变化。从 23:59 变为 00:00 时,有四个数字发生了变化。 假设 Vasya 观看的时间严格少于一天。注意,Vasya 最后看到的时间是 "h2:m2",也就是说,他没有看到 "h2:m2" 跳到下一个时刻的那一刻。

输入格式

输入的第一行包含三个用空格分隔的整数 $h$、$m$ 和 $k$($2 \leq h, m \leq 10^{9}$,$1 \leq k \leq 20$)。 第二行包含两个用空格分隔的整数 $h_1$、$m_1$($0 \leq h_1 < h$,$0 \leq m_1 < m$)。 第三行包含两个用空格分隔的整数 $h_2$、$m_2$($0 \leq h_2 < h$,$0 \leq m_2 < m$)。

输出格式

输出一个整数,表示 Vasya 看到时钟上至少有 $k$ 个数字同时变化的时刻的次数。 请不要在 C++ 中使用 %lld 格式符来读写 64 位整数。建议使用 cin 流(也可以使用 %I64d 格式符)。

说明/提示

在第一个样例中,Vasya 会看到以下时刻的变化: 0:0 $\to$ 0:1 $\to$ 0:2 $\to$ 0:3 $\to$ 0:4 1:0 $\to$ 1:1 $\to$ 1:2 $\to$ 1:3 $\to$ 1:4 2:0 $\to$ 2:1 $\to$ 2:2 $\to$ 2:3 $\to$ 2:4。 双箭头标记了所求的时刻(在本例中,即 Vasya 看到有两个数字同时变化的时刻)。 在第二个样例中,$k=1$。任何跳变时刻都可以计入,因为每次时钟变化至少有一个数字变化。总的跳变次数为 $24 \times 60 = 1440$,但 Vasya 没有看到最后一次,即 23:59 $\to$ 00:00。 在第三个样例中,Vasya 一开始看钟就睡着了,所以他没有看到任何变化。 由 ChatGPT 4.1 翻译