using System;classWalker{publicstaticint[]Solve(int a,int b,int c,int alpha,int beta,int gamma){double aa = alpha * Math.PI /180;double bb = beta * Math.PI /180;double cc = gamma * Math.PI /180;double x = a * Math.Cos(aa)- b * Math.Sin(bb)- c * Math.Cos(cc);double y = a * Math.Sin(aa)+ b * Math.Cos(bb)- c * Math.Sin(cc);double r = Math.Sqrt(x * x + y * y);int theta =(int)(Math.Acos(x / r)*180*3600/ Math.PI);int d = theta /3600;int mm = theta %3600;int m = mm /60;int s = mm %60;returnnewint[]{(int)Math.Round(r), d, m, s};}}
答案2:
using System;classWalker{publicstaticint[]Solve(int a,int b,int c,int alpha,int beta,int gamma){var h = Math.Sin(alpha * Math.PI /180)* a + Math.Cos(beta * Math.PI /180)* b - Math.Sin(gamma * Math.PI /180)* c;var w = Math.Sin(beta * Math.PI /180)* b + Math.Cos(gamma * Math.PI /180)* c - Math.Cos(alpha * Math.PI /180)* a;var oc =(int)Math.Round(Math.Sqrt(h * h + w * w));var angle =(180- Math.Atan(h / w)*180/ Math.PI)*3600;var degree = angle /3600;var minute = angle %3600/60;var second = angle %3600%60;returnnew[]{ oc,(int)degree,(int)minute,(int)second };}}
using System;classWalker{publicstaticint[]Solve(int a,int b,int c,int alpha,int beta,int gamma){double rad = Math.PI /180;double grad =180/ Math.PI;double x =0.0;double y =0.0;double dres =0.0;int quarter;double temp;int[] result =newint[4];
x = a * Math.Cos(rad * alpha)- b * Math.Sin(rad * beta)- c * Math.Cos(rad * gamma);
y = a * Math.Sin(rad * alpha)+ b * Math.Cos(rad * beta)- c * Math.Sin(rad * gamma);
result[0]=(int)Math.Round(Math.Sqrt(x * x + y * y));if(y >0.0)if(x >0.0) quarter =0;else quarter =1;elseif(x <0.0) quarter =2;else quarter =3;switch(quarter){case1:
temp = y;
y =-x;
x = temp;break;case2:
x =-x;
y =-y;break;case3:
temp = x;
x =-y;
y = temp;break;}
dres = grad * Math.Atan(y / x)+(quarter *90);
result[1]=(int)dres;
dres =((dres - result[1])*60)%60;
result[2]=(int)dres;
result[3]=(int)((dres - result[2])*60)%60;return result;}}
答案10:
using System;classWalker{privateconstdouble PI_OVER_180 = Math.PI /180;privateconstdouble PI_OVER_2 = Math.PI /2;privateconstdouble PI_UNDER_180 =180/ Math.PI;privateconstdouble TWO_PI = Math.PI *2;publicstaticint[]Solve(int a,int b,int c,int alpha,int beta,int gamma){int[] results =newint[4];double theta = alpha * PI_OVER_180;double x = a * Math.Cos(theta);double y = a * Math.Sin(theta);
theta = PI_OVER_2 + beta * PI_OVER_180;
x += b * Math.Cos(theta);
y += b * Math.Sin(theta);
theta = Math.PI + gamma * PI_OVER_180;
x += c * Math.Cos(theta);
y += c * Math.Sin(theta);double distance = Math.Sqrt(x * x + y * y);double radians = Math.Atan2(y, x);while(radians <0){
radians += TWO_PI;}double degrees = radians * PI_UNDER_180;double minutes =(degrees - Math.Truncate(degrees))*60;double seconds =(minutes - Math.Truncate(minutes))*60;
results[0]=(int)Math.Round(distance);
results[1]=(int)(radians * PI_UNDER_180);
results[2]=(int)minutes;
results[3]=(int)seconds;return results;}}
沃克【难度:2级】:答案1:using System;class Walker{ public static int[] Solve(int a, int b, int c, int alpha, int beta, int gamma) { double aa = alpha * Math.PI / 180; double bb = beta ...