题目描述
牛牛是一个热爱算法设计的高中生。在他设计的算法中,常常会使用带小数的数进行计算。牛牛认为,如果在 k 进制下,一个数的小数部分是纯循环的,那么它就是美的。
现在,牛牛想知道:对于已知的十进制数 n 和 m,在 k 进制下,有多少个数值上互不相等的纯循环小数,可以用分数 yx 表示,其中 1≤x≤n,1≤y≤m,且 x,y 是整数。
一个数是纯循环的,当且仅当其可以写成以下形式:
a.c1˙c2c3…cp−1cp˙
其中,a 是一个整数,p≥1;对于 1≤i≤p,ci 是 k 进制下的一位数字。
例如,在十进制下,0.45454545⋯=0.4˙5˙ 是纯循环的,它可以用 115、2210 等分数表示;在十进制下,0.1666666⋯=0.16˙ 则不是纯循环的,它可以用 61 等分数表示。
需要特别注意的是,我们认为一个整数是纯循环的,因为它的小数部分可以表示成 0 的循环或是 k−1 的循环;而一个小数部分非 0 的有限小数不是纯循环的。
输入格式
输入文件只有一行,包含三个十进制数 n,m,k,意义如题所述。
输出格式
只输出一行一个整数,表示满足条件的美的数的个数。
样例 1
2 6 10
4
满足条件的数分别是:
1/1=1.0000……
1/3=0.3333……
2/1=2.0000……
2/3=0.6666……
1/1 和 2/2 虽然都是纯循环小数,但因为它们相等,因此只计数一次;同样,1/3 和 2/6 也只计数一次。
23333 666666 310
5089564081
数据范围与提示
对于所有的测试点,保证 1≤n≤109,1≤m≤109,2≤k≤2000。
对于每个测试点,有以下约束(其中留空的表示没有特殊的约束):
测试点编号 |
n |
m |
k |
1 |
≤10 |
≤20 |
=2 |
2 |
≤100 |
≤104 |
3 |
≤1000 |
|
4 |
≤10000 |
5 |
≤10 |
≤20 |
=3 |
6 |
≤100 |
≤104 |
7 |
≤1000 |
|
8 |
≤10000 |
9 |
≤10 |
≤20 |
≤100 |
10 |
≤100 |
≤104 |
11 |
≤1000 |
|
≤1000 |
12 |
≤10000 |
|
13 |
≤105 |
≤108 |
≤100 |
14 |
≤2×105 |
|
≤1000 |
15 |
≤5×105 |
|
16 |
≤106 |
≤108 |
≤100 |
17 |
≤2×106 |
|
≤1000 |
18 |
≤5×106 |
|
19 |
≤107 |
≤108 |
≤100 |
20 |
≤2×107 |
|
≤1000 |
21 |
|
22 |
≤108 |
23 |
24 |
|
25 |