代码
我没用小数,用的自己做的分数类,然后发现没高精会炸掉,就突发奇想,在分数约分的时候,如果大于了某个值,就自动舍弃一部分精度:
void reduct() {
if (a == 0 && b == 0) return;
if (a >= 1e15 || b >= 1e15) {
a = (int) ((double) a * 1e15 / b);
b = (int) 1e15;
}
if (b < 0) a = -a, b = -b;
int g = gcd(abs(a), abs(b));
a /= g, b /= g;
}
这个值我调到 109 只对了 3 个点,1012 对了 8 个,1015 才 AC。想问下这个值和什么有关系。