© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 15792 - A/B - 2

2024-11-04
BOJ
브론즈 I
cpp
원본 문제 보기
수학
큰 수 연산

문제

BOJ 15792 - A/B - 2

두 정수 A, B가 주어질 때, A/B를 소수점 아래 1000자리 이상까지 정확하게 출력하라.

입력

두 정수 A, B가 주어진다.

출력

A/B를 소수점 아래 1000자리 이상까지 출력한다.

예제

입력출력
1 30.333...

풀이

긴 나눗셈(long division)을 반복하여 소수점 이하 자릿수를 구한다.

  1. 정수 부분 A/B를 출력하고 소수점을 찍는다
  2. 나머지 A%B에 10을 곱한다
  3. 다시 B로 나눈 몫을 출력하고 나머지를 갱신한다
  4. 1001회 반복한다

핵심 아이디어: 수기 나눗셈과 동일한 방식으로, 나머지에 10을 곱해 다음 소수점 자릿수를 구한다.

코드

#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{
  int A, B;
  cin >> A >> B;
  cout << int(A / B) << ".";
  A = A % B;
  for (int i = 0; i <= 1000; i++)
  {
    A *= 10;
    cout << A / B;
    A = A - (A / B) * B;
  }
}

복잡도

  • 시간: O(D) (D: 출력할 소수점 자릿수, 약 1001)
  • 공간: O(1)