Skip to content

Latest commit

 

History

History
118 lines (78 loc) · 4.21 KB

File metadata and controls

118 lines (78 loc) · 4.21 KB

English Version

题目描述

给你两个正整数 left 和 right ,满足 left <= right 。请你计算 闭区间 [left, right] 中所有整数的 乘积 。

由于乘积可能非常大,你需要将它按照以下步骤 缩写 :

  1. 统计乘积中 后缀 0 的数目,将这个数目记为 C 。
    比方说,1000 中有 3 个后缀 0 ,546 中没有后缀 0 。
  2. 将乘积中剩余数字记为 d 。如果 d > 10 ,那么将乘积表示为 <pre>...<suf> 的形式,其中 <pre> 表示乘积最 开始 的 5 个数位,<suf> 表示删除后缀 0 之后 结尾的 5 个数位。如果 d <= 10 ,我们不对它做修改。
    比方说,我们将 1234567654321 表示为 12345...54321 ,但是 1234567 仍然表示为 1234567 。
  3. 最后,将乘积表示为 字符串 "<pre>...<suf>eC" 。
    比方说,12345678987600000 被表示为 "12345...89876e5" 。

请你返回一个字符串,表示 闭区间 [left, right] 中所有整数 乘积 的 缩写 。

 

示例 1:

输入:left = 1, right = 4
输出:"24e0"
解释:
乘积为 1 × 2 × 3 × 4 = 24 。
由于没有后缀 0 ,所以 24 保持不变,缩写的结尾为 "e0" 。
因为乘积的结果是 2 位数,小于 10 ,所欲我们不进一步将它缩写。
所以,最终将乘积表示为 "24e0" 。

示例 2:

输入:left = 2, right = 11
输出:"399168e2"
解释:
乘积为 39916800 。
有 2 个后缀 0 ,删除后得到 399168 。缩写的结尾为 "e2" 。
删除后缀 0 后是 6 位数,不需要进一步缩写。
所以,最终将乘积表示为 "399168e2" 。

示例 3:

输入:left = 999998, right = 1000000
输出:"99999...00002e6"
解释:
上图展示了如何得到乘积的缩写 "99999...00002e6" 。
- 总共有 6 个后缀 0 。缩写的结尾为 "e6" 。
- 开头 5 个数位是 99999 。
- 删除后缀 0 后结尾 5 个数字为 00002 。

示例 4:

输入:left = 256, right = 65535
输出:"23510...78528e16317"
解释:
乘积是一个非常大的数字:
- 总共有 16317 个后缀 0 。缩写结尾为 "e16317" 。
- 开头 5 个数字为 23510 。
- 删除后缀 0 后,结尾 5 个数字为 78528 。
所以,乘积的缩写为 "23510...78528e16317" 。

 

提示:

  • 1 <= left <= right <= 106

解法

Python3

Java

TypeScript

...