C# 백준 알고리즘

C# 백준 1312 소수

프로핌 2023. 8. 16. 14:09

문제

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

입력

첫 번째 줄에 A와 B(1 ≤ A, B ≤ 100,000), N(1 ≤ N ≤ 1,000,000)이 공백을 경계로 주어진다.

출력

A÷B를 했을 때, 소숫점 아래 N번째 수를 출력한다.

예제 입력 1

25 7 5

예제 출력 1

2

 

난이도 : 중하

소요시간 : 40분

 

처음에는 decimal을 이용해서 나눈값을 스트링으로 문자열로 바꾼다음에 N번째의 문자열을 출력하도록 했는데

분명 값은 똑같이 나오는데 오답이 나왔다

 

이유를 알고보니 float decimal 같은 소수점들은 엄청 정교하지는 않다고한다.

 

그래서 나는 그러면 나머지를 구해서 나머지를 계속 *10을 하면 되지 않을까 해서 코드를 짰고

이런 방식으로 코드를 짜니깐 정답이 나왔다. 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Prob1312_소수
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] arr = Console.ReadLine().Split();

            int a = int.Parse(arr[0]);
            int b = int.Parse(arr[1]);
            int c = int.Parse(arr[2]);

            int d = 0;
            int e;
            int f = 0;

            int ab = a % b;

            while (d != c)
            {
                e = ab * 10;
                f = e / b;
                ab = e % b;

                d++;
            }

            Console.WriteLine(f);

         
        }
    }
}

제대로 출력이 된다.