-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadd_two_fractional_number.cpp
More file actions
52 lines (46 loc) · 1 KB
/
add_two_fractional_number.cpp
File metadata and controls
52 lines (46 loc) · 1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <bits/stdc++.h>
using namespace std;
// int get_gcd(int n1, int n2){
// if(n1==0 || n2==0){
// return (n1==0)?n2:n1;
// }
// else if(n1>n2){
// return get_gcd(n1%n2, n2);
// }
// else{
// return get_gcd(n1, n2%n1);
// }
// }
// better, as it change the order of n1&n2
int get_gcd(int n1, int n2){
if(n1==0 || n2==0){
return (n1==0)?n2:n1;
}
return get_gcd(n2, n1%n2);
}
void get_fraction(int num1, int den1, int num2, int den2){
// To get LCM of den1&den2, we first get GCD of them
int den_gcd = get_gcd(den1, den2);
int den_lcm = (den1*den2)/den_gcd;
int num = (num1*den_lcm)/den1 + (num2*den_lcm)/den2;
// ans is num/den_lcm, but we need compact form
int gcd = get_gcd(den_lcm, num);
cout<<num/gcd<<"/"<<den_lcm/gcd<<endl;
}
// 2
// 384 887 778 916
// 794 336 387 493
// Your Output is:
// 520915/406246
// 260737/82824
int main()
{
int test;
cin>>test;
while(test--){
int num1, num2, den1, den2;
cin>>num1>>den1>>num2>>den2;
get_fraction(num1, den1, num2, den2);
}
return 0;
}