[백준 C++] 1132. 소수

garden.97·2021년 12월 23일
0

백준 C++

목록 보기
11/28
post-thumbnail

문제링크

문제

피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다.


입력

첫 번째 줄에 A와 B(1≤A, B≤100,000), N(1≤N≤1,000,000)이 공백을 경계로 주어진다.


출력

A÷B를 했을 때, 소숫점 아래 N번째 수를 출력한다.


예제 입력 / 출력

// 예제 입력 1
25 7 5
// 예제 출력 1
2

알고리즘
나눗셈에서 소숫점 자리까지 구하는 방법은 나머지 부분에 10을 곱해 계속 나눗셈을 해주면서 몫을 구하는 것이다.
ex. 25 / 7의 경우
1. 몫은 3, 나머지는 4이므로 3.XXX
2. 나머지인 4에 10을 곱한 값 40을 7로 또 나누어주면 몫은 5, 나머지는 5이므로 3.5XX
3. 나머지인 5에 10을 곱한 값 50을 7로 또 나누어주면 몫은 7, 나머지는 1이므로 3.57X
4. 이런식으로 계속 반복해서 구할 수 있다.

  • 이 방법을 적용하여 소수점 아래 N번째 위치인지 확인하고 그 위치가 맞다면 몫을 출력, 아니라면 위치는 증가시켜주고 나머지에 10을 곱해 나눗셈을 또 수행한다.

#include <iostream>

using namespace std;

int main(void) {

	int A, B, N; 
	int remain, cnt = 1;

	cin >> A >> B >> N;

	remain = A % B;

	while (1) {
		remain *= 10;
		if (cnt == N) {
			cout << remain / B;
			break;
		}
		cnt++;
		remain %= B;
	}
}

profile
who wants to become a backend developer💪👩‍💻

0개의 댓글