Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:你这题它md扯蛋啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1In Reply To:你这题它md扯蛋啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 Posted by:kknd123 at 2005-02-06 18:38:19 > 怎么数据类型用double就是对的,用float就是错的? > 搞了我半天啊!题中有说明吗?一定要用double??? > import java.io.*; > import java.util.StringTokenizer; > import java.math.*; > > public class 围成面积{ > public final double PI = (double) Math.PI; > public 围成面积() { > } > > public void Start() throws Exception { > BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); > String teststring = r.readLine(); > int q = 0; > while (!teststring.equals("0 0 0 0")) { > q++; > StringTokenizer st = new StringTokenizer(teststring); > String[] s1 = new String[4]; > int i = 0; > while (st.hasMoreTokens()) { > s1[i] = st.nextToken(); > i++; > } > double[] f = new double[4]; > for (int j = 0; j < 4; j++) { > Double y1 = new Double(s1[j]); > f[j] = y1.doubleValue(); > } > double ra = 0f; //所得圆的半径 > double s = 0f; //绳子为成总面积 > double c = f[1] + f[2] + f[0]; //三角形边场 > double cosa = (f[1] * f[1] + f[2] * f[2] - f[0] * f[0]) / (2 * (f[1] * f[2])); > double cosb = (f[0] * f[0] + f[2] * f[2] - f[1] * f[1]) / (2 * (f[0] * f[2])); > double cosc = (f[1] * f[1] + f[0] * f[0] - f[2] * f[2]) / (2 * (f[1] * f[0])); > double St = 0f; //三角形面积 > St = 0.5f * f[1] * f[2] * (double) Math.sin(Math.acos(cosa)); > double ri = 2 * St / (f[0] + f[1] + f[2]); // 内结缘半径 > double ci = 2 * PI * ri; > if (f[3] <= ci) { > ra = f[3] / (2 * PI); > s = PI * ra * ra; > } > else { > ra = 0.5f * (f[3] - c) / > (double) (PI - 1 / Math.tan(0.5 * Math.acos(cosa)) - > 1 / Math.tan(0.5 * Math.acos(cosb)) - > 1 / Math.tan(0.5 * Math.acos(cosc))); > s = PI * ra * ra + St - > ra * > ra*(double)(1 / Math.tan(0.5 * Math.acos(cosa)) + > 1 / Math.tan(0.5 * Math.acos(cosb)) + > 1 / Math.tan(0.5 * Math.acos(cosc))); > } > > double temp0 = Math.round(100 * s); > s = temp0 / 100; > String ts = "" + s; > int len = ts.length() - 1 - ts.indexOf("."); > ts = ""; > for (int a = 2 - len; a > 0; a--) { > ts = ts + "0"; > } > System.out.println("Case " + q + ": " + s + ts); > teststring = r.readLine(); > } > } > > public static void main(String[] args) throws Exception { > 围成面积 t1 = new 围成面积(); > t1.Start(); > } > > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator