위의 방식과 아래의 방식에서의 차이점은 cout으로 쓴것과 printf로 쓴것밖에 없는데 위에는 정답으로 인정되고 아래는 오답으로 처리되는데 이유가 뭔지 알수 있을까요?
#include<iostream>
#include<iomanip>
#include <cmath>
using namespace std;
long double nCr(long n, long r) {
long double ret = 1;
for (int i = 0; i < r; i++) {
ret *= (n - i);
ret /= (r - i);
}
return ret;
}
int main() {
long n, m, T;
long double ans, unit;
cin >> T;
cout << fixed << setprecision(10);
while (T--) {
cin >> n >> m;
unit = 1;
for (int j = 0; j < m; j++) {
unit *= 0.25;
}
ans = 0.0;
if(m >= n)
cout << 1.0 << endl;
//if(m > 2*n)
// printf("%.10lf\n", 0.0);
else{
for(int j=n-m; j<= m; j++){
long double a = 1;
for(int k=0; k<j; k++){
a *= 3;
}
ans += nCr(m, j) * unit * a;
}
cout << ans << endl;
}
}
}
#include<iostream>
#include<iomanip>
#include <cmath>
using namespace std;
long double nCr(long n, long r) {
long double ret = 1;
for (int i = 0; i < r; i++) {
ret *= (n - i);
ret /= (r - i);
}
return ret;
}
int main() {
long n, m, T;
long double ans, unit;
cin >> T;
while (T--) {
cin >> n >> m;
unit = 1;
for (int j = 0; j < m; j++) {
unit *= 0.25;
}
ans = 0.0;
if(m >= n)
printf("%.10lf\n", 1.0);
//if(m > 2*n)
// printf("%.10lf\n", 0.0);
else{
for(int j=n-m; j<= m; j++){
long double a = 1;
for(int k=0; k<j; k++){
a *= 3;
}
ans += nCr(m, j) * unit * a;
}
printf("%.10lf\n", ans);
}
}
}
kun452
위의 방식과 아래의 방식에서의 차이점은 cout으로 쓴것과 printf로 쓴것밖에 없는데 위에는 정답으로 인정되고 아래는 오답으로 처리되는데 이유가 뭔지 알수 있을까요?
12년 전