본문 바로가기
알고리즘 문제풀이

[백준 1312] 알고리즘 33일차 : 소수

by SiO2whocode 2020. 7. 29.
728x90

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

 

1312번: 소수

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

www.acmicpc.net

수학 C++

정수를 나눈 결과의 소숫점 백만자리까지 출력할 수 있어야 한다.

double, float자료형 모두 백만자리까지의 소수점을 저장하지는 않으므로

나눗셈을 반복문으로 구현해서 값을 출력해야한다.

 

접근방법은

정수의 나눗셈을 반복문을 이용해서 구현하는 것

A/B라면 A를 B로 나눈 나머지에 10을 곱한다.

그 과정을 N만큼 반복한 뒤 마지막에 A를 B로 나눈 값을 출력하면 끝

 

소스코드

#include <iostream>
using namespace std;

int main(){
    int a,b,n;
    cin >> a >> b >> n;
    for(int i = 1 ; i <= n ; i++){
        a %= b;
        a *= 10;
    }
    cout << a/b;
    return 0;
}
728x90