AtCoder Beginner Contest 039
はい。
http://abc039.contest.atcoder.jp
仕事の時間が合わなくて参加できなかったのは残念。。
A - 高橋直体
a,b,c=map(int,raw_input().split()) print a*b*2+b*c*2+a*c*2
2面ずつある3種類の面を全て足すと6面で直方体の表面積になる。a * b * 2 + b * c * 2 + a * c * 2はちょっと不細工すぎるので(a * b + b * c + a * c)*2とかにするべきだった。
B - エージェント高橋君
print int(input()**.25)
はい。良くないことと知りつつやったのですが0.25で、sqrtを2回で4乗根を求めるのは誤差の恐れがあり非推奨解法だったようです。i * i * i * iをNになるまで回すほうが良いそうです。。
C - ピアニスト高橋君
k='WBWBWWBWBWBW'*3 s=raw_input() a=k.index(s) ans=['Do','','Re','','Mi','Fa','','So','','La','','Si','Do',''] print ans[a]
WWになる部分の間隔で鍵盤の状態が特定できる。
D - 画像処理高橋君
xy=[(1,0),(-1,0),(0,1),(0,-1)] bs=[(-1,-1),(-1,1),(1,1),(1,-1)] h,w=map(int,raw_input().split()) l=[] H=range(h) for i in H: l.append(raw_input()) ans=[['.']*w for i in H] tenkai=[['.']*w for i in H] news=[(0,0)]+xy+bs def sol(y,x): for a,b in news: if 0<=y+a<h and 0<=x+b<w: if l[y+a][x+b]=='.': return 0 return 1 for i in H: for j in range(w): if sol(i,j): ans[i][j]='#' for i in H: for j in range(w): if ans[i][j]=='#': for a,b in news: if 0<=i+a<h and 0<=j+b<w: tenkai[i+a][j+b]='#' for i in H: if ''.join(tenkai[i])!=l[i]: print 'impossible' exit() print 'possible' for i in ans: print ''.join(i)
hwの全てのマスを#にして大丈夫なマスか、自身とその周り8マスが#であるかを見る。#に出来るだけして最後まで見終わったら周囲8マスを#にして最初の入力と一致するかを答え合わせをする。hwの各マスごとに周囲のマスを見るのを2回やっても大丈夫か心配したけど全然余裕だった。