Codeforces Round #388 (Div.2) 参加記

はい。 oxx-- (0/0) 1248(-65)
http://codeforces.com/contest/749
Aのみ1完。ボロボロでした。

A. Bachgold Problem

ざっくりと大意

素数だけの数列の総和とnが等しいようになる数列を作る。

Python2

n=int(raw_input())
if n==3:
    print 1
    print 3
elif n%2:
    print n/2
    for i in range(n/2-1):
        print 2,
    print 3
else:
    print n/2
    for i in range(n/2):
        print 2,

素数を埋め込もうとしたり、どうやって選ぶか少し悩んだ後に2,3だけ使えば良いことに気付いた。なので2,3しか使わなかった。

B. Parallelogram is Back

ざっくりと大意

・3点の座標が与えられるのでそれらの3点と平行四辺形を構成するような点を全て探す。

Python2

xa,ya=[int(i) for i in raw_input().split()]
xb,yb=[int(i) for i in raw_input().split()]
xc,yc=[int(i) for i in raw_input().split()]
a=xb-xa
b=yb-ya
c=xc-xa
d=yc-ya
tmp=abs(a*d-b*c)
if tmp==0:
    print 0
    exit()
print 3
print xa+xb-xc,ya+yb-yc
print xa+xc-xb,ya+yc-yb
print xc+xb-xa,yc+yb-ya

4点目の探し方が分からなかった。A,Bの2点間の傾き、x,y座標の差異をCに足したり引いたりした座標を全て保存した後に平行四辺形になるような点を選別しようとアプローチした。だが実際にはAB+BD=AC+CDになるという特徴を利用すればよかったらしい。