スコアと


白駿

1.ユークリッド湖製法


import sys
input = sys.stdin.readline

def gcd(a, b):
    if a >= b:
        if a % b == 0:
            return b
        else:
            return gcd(b, a % b)
    elif a < b:
        if b % a == 0:
            return a
        else:
            return gcd(a, b % a)

'''
def gcd(a, b):
  while a % b != 0:
    mod = a % b
    a = b
    b = mod
  return b
'''

a, b = map(int, input().split())
c, d = map(int, input().split())

p = a * d + b * c; #분자
q = b * d; #분모

g = gcd(p, q);
 
print(p//g, q//g)


1)点数を増やす.(分母統一のために十字で乗算)
2)分子と分母の最大公約数(GCD)を求める.
3)分子と分母をGCDに分ける.

2. C++



#include <cstdio>

int gcd(int a, int b){
  if(b == 0) return a;
  else return gcd(b, a % b);
}

int main(){
  int a, b, c, d;
  int p, q, g;
  scanf("%d%d%d%d", &a, &b, &c, &d);
  p = a * d + b * c;
  q = b * d;

  g = gcd(p, q);

  printf("%d %d", p / g, q / g);
}