본문 바로가기

Algorithm/Implementation

(C++, Python) - 백준(BOJ) 1312 : 소수

반응형

https://www.acmicpc.net/problem/1312

 

1312번: 소수

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

www.acmicpc.net

구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

피제수 a, 제수 b, 출력할 소수점 자리 n을 선언 후 입력받습니다. 정답을 출력할 변수 ans를 선언해줍니다.

📔 풀이과정

n이 100만까지이므로 단순히 나눈다음 string으로 바꾸어 n+1번째자리를 출력하고 싶으나 100만자리까지 출력하기 힘들기 때문에 n+1만큼 for문을 돌면서 중간 계산 결과를 ans에 저장하는 방식이 좋습니다. loop를 수행하며 다음을 진행합니다.

 1. a/b한 결과를 int형으로 내려 ans에 먼저 저장합니다.

 2. a%b한 결과 * 10을 a에 저장합니다. * 10하는 이유는 b가 두 자리 수이며 a%b가 한 자리라면 제대로 나눈 결과를 저장할 수 없기 때문입니다.

📔 정답출력

ans를 출력해줍니다.


📕 Code

python

a, b, n = map(int,input().split())
ans = 0
for i in range(n+1):
    ans = a//b
    a = a%b * 10
print(ans)

c++

#include <bits/stdc++.h>
using namespace std;
int a, b, n, ans;
int main(){
    cin >> a >> b >> n;
    for(int i = 0; i < n+1; i++){
        ans = a / b;
        a = a%b * 10;
    }
    cout << ans;
}