n번째의 톱니바퀴가 회전하는 횟수를 구하는 문제.
사실상 관찰력 문제다.
예시를 잘 보면 (첫번째 톱니 둘레)/(i번째 톱니 둘레) 꼴이다. 이때 기약분수로 나타내야 하므로 최대공약수로 나누면 그만이다.
#include <stdio.h>
int g(int a, int b) {
if(b<=0) return a;
g(b, a%b);
}
int main() {
int i,N,k,P[99]={0};
scanf("%d",&N);
for(i=0;i<N;i++) {
scanf("%d",&k);
P[i]=k;
}
for(i=1;i<N;i++)
printf("%d/%d\n",P[0]/g(P[0],P[i]), P[i]/g(P[0],P[i]));
}
첫번째 값을 미리 받아와서 호제법을 적용한게 대다수였다. 좋은 발상이다.
#include <stdio.h>
int gcd(int a, int b) {
if (!b) return a;
return gcd (b, a % b);
}
int main() {
int n, a, b, g;
scanf("%d %d ", &n, &a);
while (n-- > 1) scanf("%d", &b), g = gcd(a, b), printf("%d/%d\n", a/g, b/g);
}