상세 컨텐츠

본문 제목

백준 class1)1008번 A/B

백준 연습

by 빙하둘리 2022. 8. 10. 20:27

본문

728x90

백준 1008번 A/B 문제 https://www.acmicpc.net/problem/1008

 

1008번: A/B

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제 조건 중요)첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.

 

C언어에서 풀 때는

#include <stdio.h>
int main()
{
    int A;
    int B;
    scanf("%d %d", &A, &B);
    printf("%.9f", (double) A/B);
    return 0;
}

printf의 인자로 출력 형식을 지정해줬지만 C++은 cin, cout을 써서 다른 방식을 써야 한다.

 

처음에는

cin >> A>>B;
cout<<(double)A/B;

만 써주니 오차가 10^(-9)보다는 커서 틀렸다고 나왔다.

 

그래서 setw 함수를 쓸까 했는데 setw는 공간지정이어서 여기서는 부적절한 함수다.

구글링한 결과 cin, cout으로 오차가 10^(-9)이하가 되게 해주려면 다음과 같이 써준다.

cout<<fixed;
cout.precision(9);
//precision의 인자로 소수점 자리를 써야 한다.​

 

정답은

#include <iostream>
using namespace std;

int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int A,B;
	cin >> A>>B;

	cout << fixed;
	cout.precision(9);
	cout <<(double)A/B; // A,B가 원래 int형이니 꼭 double형으로 강제 형 변환을
	//해줘야 되고 안 그러면 정수형 덧셈만 된다.
	return 0;
}

주의할 점은 int A,B;로 선언하고 (double)A/B 등의 실수 자료형으로 강제 형 변환하지 않으면

정수형 나눗셈이 되어서 0이 나온다.

 

참고 자료)https://shallwestudy.tistory.com/11

 

[C++ study] 출력, namespace, <<연산자, 출력 형식 지정

공부를 시작하면서 제일 첫 단계는 "Hello World"를 화면에 출력하는것이다. 기본적인 출력문을 하나하나 뜯어보는 단계를 가져보겠다. std::cout << "Hello World" << endl; 한 줄 해석: namespace std에 있는 co..

shallwestudy.tistory.com

 

C언어 실수 자료형

https://jimmy-ai.tistory.com/64

728x90

'백준 연습' 카테고리의 다른 글

백준 class1) 11720번 숫자의 합  (0) 2022.08.11
백준 class1)10951번 A+B-4  (0) 2022.08.10
백준 10951번 A+B-4 오답  (0) 2022.08.10
백준 2475번 검증수  (0) 2022.08.10
백준 1074 Z  (0) 2022.08.08

관련글 더보기

댓글 영역