
rt 不知道为什么一直float exception error
纯模拟做法()
#include <iostream>
using namespace std;
int dir[10][5] = {
{2, 3, 4, 5},
{2, 3, 4, 5},
{0, 1, 4, 5},
{0, 1, 4, 5},
{0, 1, 2, 3},
{0, 1, 2, 3}
};
long long p[10], q[10];
long long pp[10], qq[10];
int k;
long long ggcd(long long a, long long b) {
if (b == 0) return a;
return ggcd(b, a % b);
}
void add(int i, int j) {
long long a = p[i], b = q[i];
long long aa = pp[j], bb = qq[j];
if (a % 4 == 0) a /= 4;
else if (a % 2 == 0) a /= 2, b *= 2;
else b *= 4;
long long gcd = b * bb / ggcd(b, bb);
a *= gcd / b;
aa *= gcd / bb;
qq[j] = gcd / ggcd(gcd, a + aa);
pp[j] = (a + aa) / ggcd(gcd, a + aa);
}
void minuss(int i) {
long long a = p[i], b = q[i];
long long aa = pp[i], bb = qq[i];
long long gcd = b * bb / ggcd(b, bb);
if (a == aa) {
pp[i] = 0, qq[i] = 1;
return ;
}
a *= gcd / b;
aa *= gcd / bb;
qq[i] = gcd / ggcd(gcd, - a + aa);
pp[i] = (- a + aa) / ggcd(gcd, - a + aa);
}
int main() {
for (int i = 0; i < 6; i++) {
cin >> p[i];
pp[i] = p[i];
q[i] = 1; qq[i] = q[i];
}
cin >> k;
while (k--) {
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 4; j++) {
add(i, dir[i][j]);
}
minuss(i);
}
for (int i = 0; i < 6; i++) {
p[i] = pp[i];
q[i] = qq[i];
//cout << p[i] << " " << q[i] << endl;
}
}
if (q[2] == 1) cout << p[2] << endl;
else cout << p[2] << '/' << q[2] << endl;
return 0;
}