문제링크) http://codeup.kr/problem.php?id=2606
해결방법)
분자와 분모가 주어지는데 실제 나누기를 해보면 소수점 이하부분만 출력하기위한 규칙이 보여진다.
처음에는 단순하게 생각할수있는 것이 실제 나눠봐서 정수부분을 빼고 *100억을해서 출력해서 정답이었지만,
모범답안은 그렇지 않았다.
항상 분자를 분모로 나눈 나머지 *10 에서 분모를 나눈 몫이 소수점 이하 부분의 값이었다.
이를 10번만 반복하면 소수점 이하 10번쨰자리까지 구할 수 있게 된다.
소스코드)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //첫번째 답안 #include<iostream> using namespace std; unsigned long long ten; int main() { double num; int a, b,c; cin >> a >> b; num = (double)a / b; c = a / b; ten = 10000000000; num = (num - c) * ten; printf("%010.lf", num-0.5); // 소수점 첫번째 자리 -0.5해서 버림을 한다. } //모범답안 #include<iostream> using namespace std; int main() { int a, b; scanf("%d %d", &a, &b); if (a / b > 0) a = a % b; for (int i = 0; i < 10; i++) { a = a * 10; printf("%d", a / b); a = a % b; } } | cs |
반응형
'PS > 코드업' 카테고리의 다른 글
3704번 계단 오르기 2 (0) | 2019.03.31 |
---|---|
1920번 2진수 변환 (재귀함수) (0) | 2019.03.16 |
3733번 우박수 길이 - large (0) | 2019.01.27 |
재귀함수 1부터 n까지 합 구하기 (0) | 2018.11.18 |
코드업-캔디팡 문제 (0) | 2018.09.23 |