0.はじめに
Cまではそこそこの歯ごたえで溶けましたが、D以降は処理時間を
減らす工夫をする前に時間切れといった感じでした。
1.A - A Recursive Function
階乗を求める問題かなと思いつつ、素直にN回のfor文を作成。
ところがうまくいかずWhile文にしてもNG。
よく見たら”*=”を使っているのに、=の後にも元の変数を入れているという
凡ミスをしてて変に時間を食ってしまいました。
https://atcoder.jp/contests/abc273/submissions/35667109
2.B - Broken Rounding
最初にググったらpythonにround関数があると知り、それを軸に実装。
ところが、さらに調べるとうまく四捨五入できないことを知り、やり直し。
実装内容
1)iを1~Kまで回す
2)変数chkに10のi乗をセット
i=1の時、chk=10
3)変数chk2に10のi-1乗に5をかけたものをセット
i=1の時、chk=5
4)変数mXにXをchkで割った余りをセット
i=1の時、mXは1桁目の値
5)mXがchk2以上の時→切り上げ対象
XからmXを引き、chkを足す
6)mXがchk2より小さい時→切り捨て対象
XからmXを引く
7)Xを出力
https://atcoder.jp/contests/abc273/submissions/35674948
3.C - (K+1)-th Largest Number
考え方
最初問題の意図を取り違え失敗
誤)リストのi番目の数値より大きい数の個数を表示
正)リスト内に自らより大きい数字の種類がi個ある数値が何個あるかを表示
実装内容
(1)リストAを並べかえたリストsortAを用意
(2)辞書dictを用意(keyは自分以上種類数カウント、値は同値を持つ数値数)
(3)自分以上の種類数カウント用変数cntを用意
(4)初期処理としてsortA[0]の処理
dict[0]に1をセット
比較用変数preにsortA[0]をセット
(5)iを1からNまで繰り返し
(6)sortA[i]!=preの時cntに1を加算し、dict[cnt]に1をセット
(7)sortA[i]=preの時、dict[cnt]に1を加算
(8)cntにsortA[i]をセット
(9)出力処理:iを0からNまで繰り返し
(10)dict内にkey=iがある場合値を表示
(11)dict内にkey=iが無い場合0を表示
https://atcoder.jp/contests/abc273/submissions/35681088
4.D - LRUD Instructions
単純に問題通りの実装をしてみたところTLE
その時点で残り時間10分くらいだったのでEを覗いて終了
5.E - Notebook
単純に実装したら、”DELETE”だけsplitがエラーになって躓いているうちに時間切れ
変なところで引っかかってしまいました。(それが無くても解けてないとは思いますが・・・)
D・Eも面白そうな問題だったので今週時間があったら振り返りたい・・・・と思いつつすぐ
翌週になってしまいますね。