ABC096(バーチャル):水色競プロerの復習
前回のABC155でD,Eが解けず、3回連続でレートが下がってます。
もう少し時間があればDは解けたのに・・
後半の問題を解くための時間を確保するためには、前半を早解きするしかないですね。
と言うわけで、今日も過去のABCの復習で精進しました。
〇コンテスト名:ABC096
〇配点:不明
〇制限時間100分(A~Dまでの4問の時代のコンテスト)
〇今回の方針
本番のコンテストのつもりで解く
ABC097はミスが多く4ペナだったので、今回はノーミスを狙います。
コンテスト開始!
A - Day of Takahashi
2018年1月1日~2018年a月b日までの間に、月と日の数字が同じになる日が何回あるか求めよ。
1月1日、2月2日、3月3日・・a<=b ならa回、そうでなければa-1回ですね。
a,b=map(int,input().split()) if a<=b: print(a) else: print(a-1)
2:07 AC
B - Maximum Sum
1以上の整数A,B,Cが与えられる。任意の数字を2倍する操作をK回行った後のA+B+Cの最大値を求めよ。
1番大きい数字を2倍し続けるのが最善でしょう。
どうやって1番大きい数字を探すかですが、ifをたくさん書いても良いのですが、
A,B,Cをリストに入れておいて、ソートするのが簡単だと思います。
入力の段階からA,B,Cではなく、listで受けました。
List=list(map(int,input().split())) List.sort() K=int(input()) for i in range(K): List[2]*=2 print(sum(List))
4:40 AC
キャンパスが"."と"#"で埋められている。"#"は全て上下左右のいずれかに"#"が隣接していればYes、そうでなければNoを出力せよ。
キャンパス上を全探索して、"#"であった場合は上下左右のいずれかに"#"があることを確認。
この手の問題は、キャンパスの外周を"."で囲ってしまえば、渕の部分での境界を気にしなくて良いですね。
また、X=[1,-1,0,0] Y=[0,0,1,-1]とし、for i in range(4);で上下左右を確認するのもお約束ですね。
H,W=map(int,input().split()) L=[] l=["." for i in range(W+2)] L.append(l) for i in range(H): S=["."]+list(input())+["."] L.append(S) L.append(l) X=[1,-1,0,0] Y=[0,0,1,-1] for h in range(1,H+1): for w in range(1,W+1): if L[h][w]=="#": F=0 for i in range(4): if L[h+X[i]][w+Y[i]]=="#": F=1 if F==0: print("No") exit() print("Yes")
11:02 AC
D - Five, Five Everywhere
5~55の整数Nが与えられる。
異なる素数N個を並べ、どの5つを選んでも合成数となる数列を作成せよ。
まずは素数を並べろというので、素数を集めましょう。
素数といえばエラトステネスの篩。
①中身が全て1のリストを作成
②リストの0番と1番を0にする
③リストを順に見ていき、for i in range((2,N): list[i]が1であればfor j in range(2,N):でループを回し、list[i][j]を0にする。
④リストの1になっている部分が素数。
そして、どの5個を選んでも合計が合成数になる組み合わせ。
下1桁が1の素数をN子集めれば良いですね。
(解いた後で気づきましたが、下1桁が1である必要はなく、下1桁がそろってさえいれば5個の合計の1の位は5になるわけで、必ず合成数になりますね。
それに気づけばあとは書くだけ。
P=[1 for i in range(55556)] P[0]=0 P[1]=0 for i in range(2,55556): if P[i]==1: for j in range(2,55556): if i*j<=55555: P[i*j]=0 else: break ans=[] for i in range(55556): if P[i]==1 and i%10==1: ans.append(i) N=int(input()) print(*ans[:N])
19:14 AC
結局 19:14で全完(4完)0ペナでした。
当時は約90分で4ペナながらも全完してパフォ1200オーバー!
ちなみに、当時のレートは・・ゼロ!
なんとこのコンテストが私のはじめてのコンテストでした。
いや、今でもレートは1300ちょっとしかないんですけど・・
ほとんど成長していない?