传统题 文件IO:cycle 1000ms 256MiB

过循环节(24-2)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

岐岐老师的听力非常好。这一天,他听到 C 同学说自己很想过国庆节。岐岐老师十分欣慰,便决定出一道有关“循环节”的编程题,让大家用代码模拟小数除法的循环节检测。

题目描述

两个正整数相除,如果无法整除,则商要么是有限小数(如 1/2=0.51/2=0.5),要么是无限循环小数。无限循环小数又分为纯循环小数(循环节从小数第一位开始,如 1/3=0.33331/3=0.3333\ldots)和混循环小数(循环节从小数第 k>1k>1 位开始,如 2/15=0.133332/15=0.13333\ldots)。

“循环节”指的是在无限小数中,小数点后从某一位起到某一位止的一段数字不断循环出现,该段数字即为循环节。例如:

0.33333 的循环节为 3,0.33333\ldots\ \text{的循环节为 }3, 0.13333 的循环节为 3,0.13333\ldots\ \text{的循环节为 }3, 0.142857142857 的循环节为 142857.0.142857142857\ldots\ \text{的循环节为 }142857.

请编写程序,给定两个正整数 a,ba, b(保证 aa 无法被 bb 整除),在 11\,s 内计算 a/ba/b 的小数形式:

  • 如果结果是有限小数,完整输出结果,如 0.5
  • 如果结果是循环小数,则输出直到第一个循环节结束,并将循环节用 () 括起来,如 0.(3)0.1(3)

输入格式

第一行一个整数 TT,表示测试组数。
接下来 TT 行,每行包含两个正整数 a ba\ b

输出格式

对于每组数据,输出一行表示 a/ba/b 的小数结果。

  • 若为有限小数,直接完整输出;
  • 若为循环小数,输出至第一个循环节结束,并用 () 括起循环节。

样例

4
1 2
2 6
1 7
3 13
0.5
0.(3)
0.(142857)
0.(230769)
2
5 34
2 15
0.1(4705882352941176)
0.1(3)

样例解释

  • 1/2,商为有限小数 0.5
  • 2/6,商为 0.33333…,循环节为 3,故写作 0.(3)
  • 1/7,商的循环节为 142857
  • 3/13,循环节为 230769
  • 5/34,商为 0.14705882352941176…,循环节为 4705882352941176
  • 2/15,商为 0.13333…,循环节为 3

数据范围

测试点编号 数据范围 特殊性质
1 1a,b101 \le a,b \le 10 A
2–3 1a,b1001 \le a,b \le 100
4–5 B
6–7 1a,b1051 \le a,b \le 10^5
8–10 1a,b1081 \le a,b \le 10^8
  • 特殊性质 A:保证所有答案是有限小数。
  • 特殊性质 B:保证答案中没有混循环小数。
  • 对所有数据,保证 T50, 1b108T \le 50,\ 1 \le \sum b \le 10^8,且 a/ba/b 一定会是小数。
  • 单个测试点总输出长度不超过 5×1055\times10^5,空间上限 128MB。

附件

CSP-X/J 模拟赛3 补题

未参加
状态
已结束
规则
IOI
题目
8
开始于
2025-10-8 20:00
结束于
2025-10-19 6:00
持续时间
250 小时
主持人
参赛人数
26