https://www.acmicpc.net/problem/1008
짱 쉬워보인다!
그래서 우왕 쉽네 이러고 호다닥 작성해서 냈는데, 6번째 시도만에 겨우겨우 성공했다...^^*
그 이유는 바로 소수점..!
C++에서 소수점 자리수를 맞추기 위해서는 " cout.precision(); " 이 필요하다.
cout.precision(5); 라고 적으면, 소수점 5번째 자리까지 나온다.
이 내용을 토대로 작성한 코드 !
#include <iostream>
using namespace std;
int main(){
int A, B;
cin >> A >> B;
long double C;
C = (double)A/(double)B;
cout.precision(10);
if((A>0)&&(B>0)&&(A<10)&&(B<10)){
cout << C;
}
else
cout << "Use valid number! (0<A,B<10)";
return 0;
}
-> 입력: 1 3 / 출력: 0.3333333333
-> 입력: 4 5 / 출력: 0.8
-> 참고로 (double)로 형변환 안 해주면 0이 출력된다
cout.precision();과 더불어 하나 더 알아둘 것은 cout<<fixed;와 같이 사용할 수도 있다는 점이다. 이 친구를 같이 써준 코드는 다음과 같다.
#include <iostream>
using namespace std;
int main(){
int A, B;
cin >> A >> B;
long double C;
C = (double)A/(double)B;
cout << fixed;
cout.precision(10);
if((A>0)&&(B>0)&&(A<10)&&(B<10)){
cout << C;
}
else
cout << "Use valid number! (0<A,B<10)";
return 0;
}
-> 입력: 1 3 / 출력: 0.3333333333
-> 입력: 4 5 / 출력: 0.8000000000
-> cout.precision(); 앞에다 써주면 된다.
-> 출력값에서 알 수 있듯이 소수점 자리수가 고정되는 거다.
이에 더하여 cout와 cin 말고 printf와 scanf를 활용할 수도 있다.
#include <stdio.h>
int main()
{
double a, b;
scanf("%lf %lf", &a, &b);
printf("%.9lf", a / b);
return 0;
}
-> 입력: 1 3 / 출력: 0.333333333
-> 입력: 4 5 / 출력: 0.800000000
-> 참고로 float를 쓰면 소수점 아래 6자리까지만 출력이 가능하다