久々にまともなレート上昇。
http://codeforces.com/contest/559/problem/A
問題
1辺1の正三角形を上下に交互にくっつけて、各内角が120度となる六角形を作る。
(具体例は問題の図を参照)
この6角形の辺の長さA[1]~A[6]が与えられたとき、何個の三角形をくっつけて作られた図形であるか答えよ。
解法
Editorialの図がわかりやすい。
上の辺から時計回りに長さがA[1]~A[6]とする。
この六角形は長さA[1]+A[2]+A[3]の三角形の角から、長さA[1]、A[3]、A[5]の三角形を取り除いた図形と見なせる。
1辺xの正三角形は、(相似の関係から)1辺1の長さの三角形x^2個からなる。
よって解は。
int A[10]; int B[3]; void solve() { int i,j,k,l,r,x,y; string s; FOR(i,6) cin>>A[i]; B[0]=A[0]+A[1]+A[2]; B[1]=A[2]+A[3]+A[4]; B[2]=A[4]+A[5]+A[0]; cout<<B[0]*B[0]-A[0]*A[0]-A[2]*A[2]-A[4]*A[4]<<endl; }
まとめ
本番1辺xの三角形が1辺1の三角形何個からなるか1段ずつまじめに足し算して1分ロスした。
相似だからx^2なのは当たり前だよね…。