🙇‍♀️[Silver V] 소수 - 1312

문제 링크

성능 요약

메모리: 2020 KB, 시간: 8 ms

분류

수학

제출 일자

2024년 11월 14일 20:26:48

문제 설명

피제수(분자) 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번째 수를 출력한다.

🚀풀이

a를 b로 나눈 몫을 계산하고, 나머지를 b와 곱하여 다음 자리수를 구한다.
소수점 아래 n번째 자릿수까지 계산하려면 반복적으로 나머지를 이용해 자리수를 구한다.

a = a % b;

a를 b로 나눈 나머지를 구하고, 10을 곱해서 다음 자리수를 구한다.
이걸 n번 반복하여 n번째 자리수를 구한다.

for (int i = 0; i < n - 1; ++i)
{
	a *= 10;
	a = a % b;
	//cout << a << endl;
}

n-1번자리까지 계산을하고 마지막으로 a에 10을 곱하고 b로 나눈 몫을 구하여 답을 구한다.
a *= 10;
cout << a / b;

image

🚀코드

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;

int a, b, n;

void solve()
{
	cin >> a >> b >> n;
	a = a % b;

	for (int i = 0; i < n - 1; ++i)
	{
		a *= 10;
		a = a % b;
		//cout << a << endl;
	}

	a *= 10;

	cout << a / b;
}

int main()
{
	FILE* stream;
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	freopen_s(&stream, "input.txt", "rt", stdin);

	solve();

	return 0;
}