#include typedef struct{ long num,den; } frac; long pgcd(long a,long b) { return b ? pgcd(b,a%b) : a; } frac reduit(long a,long b) { long p=pgcd(a,b); return (frac){a/p,b/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=reduit(a.num*(b.den/=p)+b.num*(a.den/=p),p); c.den*=a.den*b.den; return c; } frac subfrac(frac a,frac b) { long p=pgcd(a.den,b.den); frac c=reduit(a.num*(b.den/=p)-b.num*(a.den/=p),p); c.den*=a.den*b.den; return c; } frac mulfrac(frac a,frac b) { frac c=reduit(a.num,b.den), d=reduit(b.num,a.den); c.den*=d.den; c.num*=d.num; return c; } frac divfrac(frac a,frac b) { frac c=reduit(a.num,b.num), d=reduit(b.den,a.den); c.den*=d.den; c.num*=d.num; return c; } int main() { frac s={0,1}; long i; for(i=1;i<=1000;i++) s=addfrac(s,reduit(i*i+3,i*(i+1)*(i+2)*(i+3))); afffrac(s); return 0; }