#include <stdio.h> int num[10000]={0}; int num2[10000]={0}; int max(int n, int m); //최대공약수를 구하는 함수 void line(int c); //내림차순으로 정렬하는 함수 /*void pr(int c) { int i; for(i=0; i<c; i++) { printf("%d ", num2[i]); } printf("\n"); }*/ int main(void) { int n, m, a, cnt; scanf("%d %d", &n, &m); //가로 길이 : n, 세로 길이 : m a=max(n, m); cnt=(n/a)*(m/a); printf("%d", cnt); return 0; } int max(int n, int m) { int i, j, a, mm=1, c=0; if(n>m) //무조건 m이 더 큰 수이도록 만들기 { a=n; n=m; m=a; } for(i=1; i<=(n/2); i++) //n의 약수 구하기 { if(i==num[c-1]) break; if(n%i==0) { num[c++]=i; if(i!=n/i) num[c++]=n/i; else break; } } line(c); for(i=0; i<c; i++) { if(m%num2[i]==0) { mm=num2[i]; break; } } return mm; } void line(int c) { int i, temp; c--; for(i=0; i<=c; i++) { if(i%2==0) { num2[c-(i/2)]=num[i]; } else { num2[i/2]=num[i]; } } }
2018.01.20 10:31
정올 - 실력키우기 - 타일교체(2810)
조회 수 187 추천 수 0 댓글 0