#include typedef struct{ long num,den; } frac; long pgcd(long a,long b) { return b ? pgcd(b,a%b) : a; } void reduit(frac*a) { long p=pgcd(a->num,a->den); a->num/=p; a->den/=p; } void afffrac(frac a) { printf("(%ld/%ld)",a.num,a.den); } frac addfrac(frac a,frac b) { long p=pgcd(a.den,b.den); frac c={a.num*(b.den/=p)+b.num*(a.den/=p),p}; reduit(&c); c.den*=a.den*b.den; return c; } frac subfrac(frac a,frac b) { long p=pgcd(a.den,b.den); frac c={a.num*(b.den/=p)-b.num*(a.den/=p),p}; reduit(&c); c.den*=a.den*b.den; return c; } frac mulfrac(frac a,frac b) { long x=a.den; a.den=b.den; b.den=x; reduit(&a); reduit(&b); a.den*=b.den; a.num*=b.num; return a; } frac divfrac(frac a,frac b) { long x=a.den; a.den=b.num; b.num=x; reduit(&a); reduit(&b); a.den*=b.num; a.num*=b.den; return a; } int main() { frac s={0,1}; long i; for(i=1;i<=1000;i++) { frac t={i*i+5,i*(i+1)*(i+2)*(i+3)}; reduit(&t); s=addfrac(s,t); } afffrac(s); return 0; }