Type: Default 1000ms 256MiB

优秀数

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

在概率论中,存在一个被称为本福德定律的悖论:“在许多来源于实际的数据随机数列表中,以数字 11 开头的数出现的频率远高于其它数字作为首位的情况”(这是该定律最简单的表述形式)。

刺猬在 Codeforces 上读到过这个定律后,对此产生了兴趣,并希望深入研究它。他特别关注如下类似问题:有 NN 个随机变量,第 ii 个随机变量可以取区间 [Li,Ri][L_{i},R_{i}] 内的任意整数(该区间内的所有数出现的概率相等)。也就是说,第 ii 个量可以等概率地取 [Li,Ri][L_{i},R_{i}] 之间的任意整数,其概率均为 1/(RiLi+1)1/(R_{i}-L_{i}+1)

刺猬想知道这样一种事件发生的概率:这些值当中至少有 K%K\% 的数以 11 为首位数字。换句话说,我们考虑这些随机变量的某组确定取值,仅保留每个值的首位数字(即最高有效数字,MSD)。然后统计首位为 11 的次数,如果至少占这些 NN 个值的 K%K\%,那么这组数就被称为“好”的。你需要计算这些随机变量的所有可能取值中,得到“好”组的概率。

输入格式

第一行包含一个整数 NN,表示随机变量的数量(1N10001 \leq N \leq 1000)。接下来的 NN 行每行包含一对整数 Li,RiL_{i},R_{i},分别描述一个随机变量。保证 1LiRi10181 \leq L_{i} \leq R_{i} \leq 10^{18}

最后一行为一个整数 KK0K1000 \leq K \leq 100)。

输入文件中所有数字均为整数。

请不要在 C++ 中使用 %lld 读写 64 位整数,建议使用 cin(也可以用 %I64d)。

输出格式

输出所求概率。结果的小数绝对误差或相对误差不超过 10910^{-9}

1
1 2
50

0.500000000000000
2
1 2
9 11
50

0.833333333333333

A班0316上课

Not Claimed
Status
Done
Problem
6
Open Since
2026-3-17 18:30
Deadline
2026-3-31 23:59
Extension
24 hour(s)