#include <iostream>
using namespace std;
long long GCD(long long a, long long b)//최대 공약수 구하는 함수
{
int c = 0;
while(b!=0)
{
c = a%b;
a = b;
b = c;
}
return a;
}
long long solution(int w,int h) {
long long answer = 1;
long long W = w;
long long H = h;
long long iTemp = GCD(w, h);//1.최대공약수 구한다.
long long width = W/iTemp;//분할된 직사각형 가로길이
long long heith = H/iTemp;//분할된 직사각형 세로길이
//잘려나가는 사각형
answer = W*H - iTemp * (width+heith-1);
return answer;
}
중간에
long long width = W/iTemp;//분할된 직사각형 가로길이
long long heith = H/iTemp;//분할된 직사각형 세로길이
이거안하면 답안나온다.
최대공약수 구하는 방법
이거랑
int GCV(int a,int b)
{
if(a==0) return b;
return GCD(int b%a,a);
}
수식쓸땐 최대공약수 직사각형 분할로 나눔.
분할로 나눠진 상태에서 (width+heith-1);에다가 분할되기전 수를 곱한거다.