整体的思路来自于这篇文章:http://hi.baidu.com/chu2rikka/item/59ff471961814ae45f53b1cf
#include<iostream>
#include<map>
#include<cmath>
using namespace std;
int gcd(int x, int y)
{
return y == 0 ? x : gcd(y, x % y);
}
int main()
{
int x, y, tmp;
while(~scanf("%d%d", &x, &y))
{
int div = gcd(x, y);
x /= div; // 例如4/24要转化成1/6,不然的话会对后面分母计算2与5的因子数有干扰
y /= div;
int num = x % y;
printf("%d.", x / y); // 首先输出整数部分
if(x % y == 0) // 若是4/2则没必要计算,直接输出结果
{
printf("0\n");
continue;
}
int aa, bb = 0, tmp = y;
aa = (int)log2((tmp & (