板子:
1 int gcd(int a, int b) { return b > 0 ? gcd(b, a % b) : a; }
POJ1930
题意:给你一个无限循环小数,给到小数点后 9 位,要求这个数的分数形式。
解法:
要想解决这道题,首先应该了解如何将循环小数化为分数:
一,纯循环小数化分数:循环节的数字除以循环节的位数个 9 组成的整数。例如:
$0.3333……=3/9=1/3$;
$0.285714285714……=285714/999999=2/7$.
二,混循环小数:(例如:$0.24333333……$)不循环部分和循环节构成的的数减去不循环部分的差,再除以循环节位数个 9 添上不循环部分的位数个 0。例如:
$0.24333333…………=(243-24)/900=73/300 $
$0.9545454…………=(954-9)/990=945/990=21/22$
这便是循环小数化成分数的方法,知道这个后,解决这道题也好办了。
代码如下:
1 #pragma GCC optimize(3)
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include