作者bil193 (丁丁)
看板C_and_CPP
標題[ACM ] 10209 覺得sample output怪怪的
時間Fri Dec 4 03:58:34 2009
題號:10209
英文題目:
http://tinyurl.com/ya7c3yx
遇到的問題:
題目的Sample Input:
0.1
0.2
0.3
Sample Output:
0.003 0.005 0.002
0.013 0.020 0.007
0.028 0.046 0.016
他的output是只取到小數點後三位的結果
但我的程式是在"還沒有捨去小數點後三位"後 的情況下,輸入0.1會得到:
0.002718 0.005981 0.001302
沒有道理ACM要讓第一個進位成0.003,第二個不要進位成0.005啊@@
有問題的code: (請善用置底文的標色功能)
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
double a,n1,n2,n3;
while(scanf("%lf",&a)!=EOF)
{
n1=( (2*3.1415926-pow(3,1.5))/4.0 )*a*a;
n2=( (pow(3,1.5)-4)/2.0 )*a*a;
n3=a*a-n1-n2;
printf("%lf %lf %lf\n",n1,n2,n3);
}
return 0;
}
補充說明:
π用3.1415926,3*√3用pow(3,1.5),用double而非long double,不曉得是不是關鍵。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.230.240
推 joefaq:你都知道了還問 2*acos(0.0)的精度比小數點下7位高多了 12/04 04:18
→ joefaq:發現是你程式寫錯 這題根據我的印象判斷面積沒這麼簡單 12/04 04:28
推 syuusyou:pi不夠準確,而且算式列錯了再算一次吧 12/04 05:31
→ bil193:謝謝各位的一鞭 已經AC了 12/05 10:53