0.はじめに
年明け早々に帯状疱疹になり、痛みに耐えて頑張りました。
Cは今一攻め切れなさそうだったので、Dからやったら
解けたので、年始一発目としては満足です。
1.A - Sequence of Strings
あまりきれいに答えようとせず
シンプルに考えて、回答しました。
頭から保存していって、出力を後ろからにしました。
for i in range(N):
print(list[N-i-1])
https://atcoder.jp/contests/abc284/submissions/37797242
2.B - Multi Test Cases
問題文通り、1つの入力で複数のテストケースを裁くだけの簡単なお仕事でした。
https://atcoder.jp/contests/abc284/submissions/37802076
3.C - Count Connected Components
ははーん。これは頓知的な問題で、辺数が頂点数以上なら
全部つながっているし、それ以下なら、辺数-頂点数の固まりになるんだな!
と、回答しましたがWA。
ま、まぁ、3角形とかが出来てるケースを考えればダメなのは
わかるんですが・・・。
一筋縄ではいかないと思いスキップ(戻ってきませんでしたが)
後日回答。
普通に、辺を2次配列に格納し、再帰関数でつながっている固まりを
カウントしてAC。
落ち着いてやれば時間内に行けたかもなと後悔。
https://atcoder.jp/contests/abc284/submissions/37958467
4.D - Happy New Year 2023
ぱっと見簡単に見えたので着手したもののTLEの解消にてこずりました。
それでも時間内にACがもらえたので満足感のある問題でした。
2個
考え方1
素因数分解で素数と個数を求める関数をググってもってくる。
2個必要な素数pと1個の素数qが分かるので表示!
→予想した通りTLEでした。
考え方2
素数表を作りその2乗で入力数を割っていき
割り切れたら、その素数がp、商がq!
→制限秒数で計算可能な素数の上限が7桁だったため、上記の方法では足りずWA。
考え方3
1)7桁までの数字で素数表を作る
2)Nを素数表で割っていく
3)n%xが0の時n/xをさらにxで割る
3-1)割り切れた場合
・xがp、n/x/xがq
3-2)割り切れない場合
・xがq、n/xよりsqrt関数で平方根を求めその数がp
なんとかAC頂けました。
https://atcoder.jp/contests/abc284/submissions/37835114
後日解説を見たら、素数を求めずとも、pqどちらかがnの3平方内に収まることを
利用すれば解けることを知りました・・・。まぁとけたからいいか・・・
以上