SNAIL 문제 질문입니다 kun452 위의 방식과 아래의 방식에서의 차이점은 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); } } } 10년 전
2개의 댓글이 있습니다. Being long double의 표준 출력 지정자는 %lf가 아니라 %Lf입니다. 10년 전 link kun452 아.. 감사합니다.. 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
kun452
위의 방식과 아래의 방식에서의 차이점은 cout으로 쓴것과 printf로 쓴것밖에 없는데 위에는 정답으로 인정되고 아래는 오답으로 처리되는데 이유가 뭔지 알수 있을까요?
10년 전