RT
code:
#include <bits/stdc++.h>
using namespace std;
struct frac {
long long a, b;
long long gcd(long long a, long long b)
{
return b ? gcd(b, a % b) : a;
}
void cut()
{
long long g = gcd(a, b);
a /= g, b /= g;
}
frac operator+(const frac& p) const
{
frac ret;
ret.b = b * p.b;
ret.a = a * p.b + p.a * b;
ret.cut();
return ret;
}
int cnt(long long a, char c)
{
while (a) {
putchar(c);
a /= 10;
}
}
void print()
{
cnt(a / b, ' ');
printf("%lld\n", a % b);
printf("%lld", a / b);
cnt(b, '-');
puts("");
cnt(a / b, ' ');
printf("%lld", b);
}
};
frac f[100];
int main()
{
f[1] = frac { 1, 1 };
int n;
scanf("%d", &n);
for (int i = 2; i <= n; i++) {
f[i] = f[i - 1] + frac { n, n - i + 1 };
}
f[n].print();
}