Koder / 박성훈
article thumbnail

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 형 같은 경우 정확도가 그리 높은편이 아니기 때문에 백만번 나누면 부정확해진다.

python의 Decimal 형같은경우는 어찌저찌 될지도...? 근데 그것보단 아래풀이가 더 깔끔하다.

 

몫이 정답이 되고 나머지를 또 나눌수 있게 하기 위하여 10을 곱해주면 된다.

N이 실버5치고 상당히 커보이기때문에 겁먹을 수 있으나

반복문 하나가 백만번 도는 정도로는 시간초과를 받지 않으니 규칙성같은거찾지말고

직접 다 나눠줘도 된다.

 

#include <bits/stdc++.h>
using namespace std;

int main(){
	int A,B,C;
	int ans;
	
	cin >> A >> B >> C;
	
	for(int i=0; i<C; i++){
		A = (A%B)*10;
		ans = A/B;
	}
	
	cout << ans;
	return 0;
}

반응형