C언어 백준 풀면서 이해한 함수들 적어보자!

박경현·2023년 6월 26일
0

백준을 풀면서 적용했던

최대 공약수, 최소 공배수, 소수점 아래 부분 구하기

최대 공약수를 C언어로 구해보자!

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;
}

최소 공배수를 C언어로 구현해보자!

최소공배수 = (a*b) / (최대 공약수)

int lcm(int a, int b) { return a*b / gcd(a,b); }

백준 1312 - 소수점 아래 원하는 부분 구하는 코드 구현하기!

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;
}
profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글