【PAT】1081. Rational Sum (20)
820 단어 최대 공약수
주로 long long 을 ll 로 정의 하고 최대 공약수 를 취 하 는 방법 을 잘 알 고 있 습 니 다.
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
for(int t;t=b;b=a%b,a=t);
return a;
}
ll aa,bb;
int main(){
ll a,b,g;
int n;
aa=0,bb=1;
scanf("%d",&n);
while(n--){
scanf("%lld/%lld",&a,&b);
aa=aa*b+bb*a;
bb=bb*b;
g=gcd(labs(aa),labs(bb));
aa/=g;
bb/=g;
}
if(aa==0){
printf("0");
}
else{
if(aa/bb && aa%bb)printf("%lld %lld/%lld
",aa/bb,aa%bb,bb);
else if(aa/bb){
printf("%lld
",aa/bb);
}
else if(aa%bb){
printf("%lld/%lld
",aa,bb);
}
}
return 0;
}