AOJ - Problem 0116 : Area of Polygon
円に内接する2つの多角形の面積の大きさを比較する問題です。
三角形の面積は(半径)*(半径)*sinθ÷2で計算できます。
面積の大きさの比較だけなので半径を1として(÷2)を省略しても問題ないでしょう。
#include <iostream> #include <vector> #include <cmath> using namespace std; int main(){ int m,n; const double pi = 3.14159265358979; const double EPS = 1e-10; while( cin >> m , m ){ int v, angleA=0, angleB=0; vector<int> a,b; for(int i=0 ; i < m-1 ; i++ ){ cin >> v; a.push_back( v ); angleA += v; } cin >> n; for(int i=0 ; i < n-1 ; i++ ){ cin >> v; b.push_back( v ); angleB += v; } a.push_back( 360 - angleA ); b.push_back( 360 - angleB ); double sa=0.0, sb=0.0; for(int i=0 ; i < a.size() ; i++ ){ sa += sin( a[i]*pi/180.0 ); } for(int i=0 ; i < b.size() ; i++ ){ sb += sin( b[i]*pi/180.0 ); } if( fabs(sa-sb) < EPS ) cout << 0 << endl; else if( sa > sb ) cout << 1 << endl; else cout << 2 << endl; } }