본문 바로가기

백준/실버

[백준 1312번] 소수 (C++)

문제링크 : https://www.acmicpc.net/problem/1312

 

1312번: 소수

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

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;

int A, B, N, result;

int main()
{
    ios_base::sync_with_stdio(0); 
	cin.tie(0);
    
    cin >> A >> B >> N;

    while(N--) //N번만큼 반복
    {
        A%=B; //나머지 저장
        A*=10; //나누기 연산을 위해 10곱해줌
        result = A/B; //소숫점 저장
    }
    cout << result;
    return 0;
}

 

실제 나눗셈 과정을 코드로 옮긴듯한 문제이다.

나눗셈 연산에서 나누고 나눈 나머지에 대해 10을 곱하고 또 나눗셈을 이어 나가기에 이를 코드로 구현해준다.

 

7/25
-> 몫 3
나머지 4 (A%B)

7/4*10 (A*10)
-> 몫 5 (A/B)
나머지 5

7/5*10
-> 몫 7, 나머지 1

7/1*10
-> 몫 1, 나머지 3

7/3*10
-> 몫 4, 나머지 2

7/2*10
->몫 2 (N번쨰 A/B)