백준을 풀면서 적용했던
최대 공약수, 최소 공배수, 소수점 아래 부분 구하기
gcd라고도 불리는데 6,8이 있을때 두 약수중 겹치는 약수 가운데 가장 큰 약수를 구하는 수학 식이다!
8과 6의 최대 공약수를 구해보자!
8%6 = 2 즉 이게 6의 부분에 다음에 들어간다!
6 %2 = 0
2 % 0 = 0 // 이때 while문을 탈출하고 2를 출력해준다!
2가 바로 8과 6의 최대 공약수!!
int gcd(int a, int b) {
int tmp,n;
// 일단 a가 b보다 작으면 이거 다음 while문이 작동을 안하므로
// 작다면 a 와 b 바꿔주기!
while(a <b) {
tmp = a;
a = b;
b = tmp;
}
while (b !=0) {
n = a %b;
a = b;
b = n;
}
return a;
}
최소공배수 = (a*b) / (최대 공약수)
int lcm(int a, int b) { return a*b / gcd(a,b); }
https://www.acmicpc.net/problem/1312
해결방법
일단 나눠서 몫을 구한다!!
그리고 10을 곱한뒤 몫을 구해서 결과에 넣는다!
이러면 나머지의 각 번지들을 나눈게 순차적으로 결과에 들어간다!
#include<stdio.h>
int main(void) {
int a,b,n;
int result;
scanf("%d %d %d", &a,&b, &n);
for(int i=0; i<n; i++) {
a = a%b;
a *= 10;
result = a/b;
}
return 0;
}