#include<stdio.h>
#include<stdlib.h>
int yuefen(long long int A, long long int B) { //函数,完成约分动作
long long int c, d, e;
if (A >= B) {
c = A;
d = B;
}
else {
c = B;
d = A;
}
e = d;
while (e != 0) {
e = c % d;
c = d;
d = e;
}
return c;
}
int main() {
int count=0;
long long int N;
long long int *a;
long long int *b;
long long int i, A = 0, B = 1, c;
while(scanf("%ld", &N)!=EOF){
if(N==0){
}else{
A = 0, B = 1;
a =(long long int *)malloc((N+1)*sizeof(long long int));
b =(long long int *)malloc((N+1)*sizeof(long long int));
for (i = 1; i <= N; i++)
scanf("%lld/%lld", &a[i], &b[i]);
for (i = 1; i <= N; i++) {
A = A * b[i] + a[i] * B;
B = B * b[i];
c = yuefen(A, B); //随时约分,避免溢出
A /= c;
B /= c;
};
if(A==0){
printf("%d",0);
}
if(A>0){
c = yuefen(A, B); //随时约分,避免溢出
A /= c;
B /= c;
if (B == 1){
printf("%lld\n", A);
A=5;
B=5;}
if(A<B){
printf("%lld/%lld\n", A, B);
}
if (A>B){
int t =A/B;
int q =A-t*B;
printf("%lld %lld/%lld\n", t,q, B);
}
}
if(A<0) {
A=A*-1;
if (B == 1){
printf("%lld\n", -1*A);
A=-5;
B=-5;
}
if(A<B){
printf("%lld/%lld\n", -1*A, B);
}
if (A>B){
long long int t =A/B;
long long int q =A-t*B;
printf("%lld %lld/%lld\n", -1*t,-1*q, B);
}
}
free(a);
free(b) ;
}}
return 0;
}
PTA L1-009. N个数求和
最新推荐文章于 2024-03-15 22:42:32 发布