#D0996. 循环小数

循环小数

题目描述

33DAI 在研究分数化成小数之后的规律。给定分数 pq\frac{p}{q}(1≤p<q1 \le p < q),把它写成小数;如果它是有限小数,就在末尾补 00 看成无限小数(例如 12=0.5000…\frac{1}{2} = 0.5000\ldots,14=0.25000…\frac{1}{4} = 0.25000\ldots)。

小数部分从某一位开始一定会周期性地重复。33DAI 用两个数来描述这件事:

  • 循环起点 ss:从第 ss 位开始,小数部分按某个长度重复,并且 ss 是满足这一点的最小正整数;
  • 循环节长度 LL:在 ss 取到最小的前提下,使"从第 ss 位开始每隔 LL 位都相同"成立的最小正整数。

形式化地说:ss 是使"存在正整数 LL,对任意 i≥si \ge s 都有第 ii 位数字与第 i+Li + L 位数字相同"成立的最小正整数;确定 ss 之后,LL 取满足该条件的最小正整数。

给定 tt 组 p,q,kp, q, k,33DAI 想知道每组中:

  • 小数部分第 kk 位上的数字;
  • 循环起点 ss;
  • 循环节长度 LL。

输入格式

从标准输入读入数据。

输入的第一行是一个整数 tt(1≤t≤101 \le t \le 10),表示询问的个数。

接下来 tt 行,每行三个整数 p,q,kp, q, k(1≤p<q≤1061 \le p < q \le 10^6,1≤k≤10181 \le k \le 10^{18})。

输出格式

输出到标准输出。

输出 tt 行,顺序与输入一致。每行三个整数 d,s,Ld, s, L,用一个空格隔开,依次表示第 kk 位上的数字、循环起点、循环节长度。

3
1 3 1
1 2 1
1 7 5
3 1 1
5 2 1
5 1 6
3
5 6 3
1 6 10
1 28 1
3 2 1
6 2 1
0 3 6
2
1 4 13
1 999983 1000000000000000000
0 3 1
1 1 999982

样例解释

  • 样例 1:13=0.3333…\frac{1}{3} = 0.3333\ldots,第 11 位是 33,从第 11 位起重复的段是 3,所以起点 11、长度 11。12=0.5000…\frac{1}{2} = 0.5000\ldots,第 11 位是 55,从第 22 位起重复的段是 0,所以起点 22、长度 11。17=0.142857142857…\frac{1}{7} = 0.142857142857\ldots,第 55 位是 55,循环节是 142857,所以起点 11、长度 66。
  • 样例 2:56=0.8333…\frac{5}{6} = 0.8333\ldots,第 33 位是 33,从第 22 位起重复的段是 3,所以起点 22、长度 11。16=0.1666…\frac{1}{6} = 0.1666\ldots,第 1010 位是 66,起点 22、长度 11。128=0.035714285714…\frac{1}{28} = 0.035714285714\ldots,第 11 位是 00,从第 33 位起是 571428 的重复,所以起点 33、长度 66。
  • 样例 3:14=0.25000…\frac{1}{4} = 0.25000\ldots,第 1313 位是 00,从第 33 位起重复的段是 0,所以起点 33、长度 11。1999983=0.000001000017…\frac{1}{999983} = 0.000001000017\ldots 是纯循环小数,循环节长度是 999982999982,所以起点是 11;第 101810^{18} 位上的数字是 11。

提示

  • 输出每行三个整数,用单个空格隔开。
  • 循环起点与循环节长度都按"小数点后第几位"从 11 开始编号。
  • qq 最大是 10610^6,kk 最大是 101810^{18}。

数据范围

对于所有测试数据,保证 1≤t≤101 \le t \le 10,1≤p<q≤1061 \le p < q \le 10^6,1≤k≤10181 \le k \le 10^{18}。

子任务 分值 测试点数 限制
11 3030 55 q≤1000q \le 1000,k≤104k \le 10^4
22 q≤106q \le 10^6,k≤106k \le 10^6
33 4040 无额外限制

共 1515 个测试点,按测试点计分:子任务 11、22 的每个测试点 66 分,子任务 33 的每个测试点 88 分。