SP7109 INDIPROG - Indicator of progression

题目描述

在执行长时间任务时,计算机通常会提供一个进度条来帮助用户估算还需等待的时间。这在从一个驱动器向另一个驱动器复制大量数据文件时尤为重要。 在计算机电源控制研究所(ICPC),他们为一款全新的文件复制工具感到自豪,他们认为这将彻底改变文件的复制方式。虽然对ICPC的工程师来说这是一个了不起的成就,但由于缺少进度指示器,这个项目的前景和全球大多数计算机用户的工作体验可能受到影响。 ICPC的最高主管亲自联系你,希望你能够解决这个问题。这个文件复制工具的开发团队提供的接口只有两个整数:$M$ 和 $N$。其中,$M$ 是已经复制的文件数量,$N$ 是总文件数量。你需要利用这些信息编写一个模块,用来显示进度指示器。 指示器需要展示为一个长度为20个字符的字符串,最开始的 $K$ 个字符要用星号(“*”)表示,剩余部分用连字符(“-”)表示。这里,$K$ 的值需要精确选择,使得 $K/20$ 能够最接近 $M/N$;也就是说,这两个分数之间的差值要最小。如果有多个合理的 $K$ 值,需要选择最大的那个。 此外,为了精确地表示完成比例,你还需要在这个指示器的正上方显示一个数字 $P$,这个数字后跟一个百分号(“%”),且没有前导零。由于目的是表示完成百分比,$P/100$ 需要最接近 $M/N$,选择方法和上面一样。完成的百分比要居中显示在指示器的上方。如果左右无法平均,则左边要比右边多一个字符。

输入格式

输入包含若干测试用例。每行描述一个测试用例,由两个整数 $M$ 和 $N$ 组成($0 \leq M \leq N \leq 10^5$),中间用空格隔开。输入的最后一行为两个 -1,用空格隔开,表示结束标记,不作为测试用例处理。

输出格式

对于每个测试用例,输出一行长度为20个字符的字符串,代表所述的进度显示。 **本翻译由 AI 自动生成**