Aizu Online Judge(AOJ)の過去問から、C++による提出コードの解答例です。
Introduction to Programming IよりTopic # 10のAからDまでの計4問です。
https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/10
Topic # 10 "Math Functions"
・ITP1_10_A : Distance
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_A
・ITP1_10_B : Triangle
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_B
・ITP1_10_C : Standard Deviation
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_C
・ITP1_10_D : Distance II
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_D
僕が作成、提出したコードは、以下のとおりです。
・ITP1_10_A : Distance
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_A
/* ITP1_10_A : Distance https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_A 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; double ans1=pow(x2-x1,2)+pow(y2-y1,2); double ans2=sqrt(ans1); printf("%.5lf",ans2); return 0; }
・ITP1_10_B : Triangle
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_B
/* ITP1_10_B : Triangle https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_B 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; const long double pi=3.14159265358979323846; int main(void){ long double a,b,C; cin>>a>>b>>C; long double S=a*b*sin(C/180.0*pi)/2.0; cout<<setprecision(15)<<S<<endl; long double c=sqrt(powl(a,2)+powl(b,2)-2.0*a*b*cos(C/180.0*pi)); long double L=a+b+c; cout<<setprecision(15)<<L<<endl; long double h=2.0*S/a; cout<<setprecision(15)<<h<<endl; return 0; }
・ITP1_10_C : Standard Deviation
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_C
/* ITP1_10_C : Standard Deviation https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_C 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ while(1){ int n; cin>>n; if(n==0){ return 0; } vector<long double> s(n); long double sum=0; for(int i=0;i<n;i++){ cin>>s[i]; sum+=s[i]; } long double m=sum/n; long double aa=0; for(int i=0;i<n;i++){ aa+=pow(s[i]-m,2); } aa/=n; long double a=sqrt(aa); cout<<setprecision(20)<<a<<endl; } }
・ITP1_10_D : Distance II
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_D
/* ITP1_10_D : Distance II https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_D 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; vector<long double> x(n),y(n); for(int i=0;i<n;i++){ cin>>x[i]; } for(int i=0;i<n;i++){ cin>>y[i]; } long double one=0.0; for(int i=0;i<n;i++){ one+=(abs(x[i]-y[i])); } long double two=0.0; for(int i=0;i<n;i++){ two+=(pow(abs(x[i]-y[i]),2)); } two=sqrt(two); long double three=0.0; for(int i=0;i<n;i++){ three+=(pow(abs(x[i]-y[i]),3)); } three=cbrt(three); long double inf=-1.0; for(int i=0;i<n;i++){ inf=max(inf,abs(x[i]-y[i])); } cout<<setprecision(20)<<one<<endl; cout<<setprecision(20)<<two<<endl; cout<<setprecision(20)<<three<<endl; cout<<setprecision(20)<<inf<<endl; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/