| ||||||||||
| 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