BOJ 13301. 타일 장식물
🙇♀️[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;
🚀코드
#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;
}