AtCoder入門 3-3
- [:contents]
- ABC
- ABC 220 b
- ABC 090 b
- ABC 068 b
- ABC 093 B B - Small and Large Integers
- ABC 208 B B - Factorial Yen Coin
- ABC 164 B - B - Battle
- ABC 200 B - B - 200th ABC-200
- ABC162 B - FizzBuzzSum
- ABC206 B - Savings
- ABC165 B - 1%
ABC
問題リンク↓
回答
回答リンク↓
振り返り
ABC 220 b
問題リンク↓
B - Base K
回答
回答リンク↓
Submission #41598161 - AtCoder Beginner Contest 220
振り返り
- 答えをint型でやってたら最初
WA
がでた - 10 ^9 以上になりうるならば long long 型にするのが良さそう。
ABC 090 b
問題リンク↓
B - Palindromic Numbers
回答
回答リンク↓
Submission #41597002 - AtCoder Beginner Contest 090
振り返り
- エディタに考えを書きながらコーディングしてみた。
- 結構いい感じかもなので続けてみる。
- string型久しぶりに扱って忘れてたけど、ぱぱっと調べながらできてよかった。
- 文字列長取得できるよね?とか、配列的にアクセスできるよね?とからへんは覚えてたのはよかった。
ABC 068 b
回答
Submission #41596543 - AtCoder Beginner Contest 068
振り返り
- 特になし。
ABC 093 B B - Small and Large Integers
回答
Submission #41528487 - AtCoder Beginner Contest 093
振り返り
- もっと瞬殺で解ける様になりたい
- 頭の中だけで考えると全然考えがまとまらないので、今わかっている範囲で良いので、まずは書き出して行くことが大事だと思う。
- いきなり最適解を出す必要はなくて、分かっている条件とかパターンをつらつらと書き出していって、書き出したあと、まとめれるところまとめてきれいにすれば良いんだと思う。
ABC 208 B B - Factorial Yen Coin
回答
Submission #41501940 - AtCoder Beginner Contest 208
振り返り
- 急に難易度高くない?
- 少し時間かかったが、答えみずにとけた。
- vectorの使い方とか忘れていた。添字で一個ミスってた。よくありがち。
- 解説見ると難しいこと書いてあった。あとでよむと良いかも。
ABC 164 B - B - Battle
回答
Submission #41480333 - AtCoder Beginner Contest 164
振り返り
- とくに振り返ることなし。
ABC 200 B - B - 200th ABC-200
回答
Submission #41464806 - KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)
振り返り
- なんなく正解できた。
- もっとも大きい答えの場合のデータサイズの見積もりについては、あまり考慮できていない。
- とりあえず long longでやっときゃいけるやろ。とざっくり解いてしまっている。
ABC162 B - FizzBuzzSum
- ansの型をどうすれば良いのかわからなくてchatgptに質問した
- 結果、long long型にすればOKだった。
- はじめはdouble型にしていたが、倍精度浮動小数点になるので、
2.66666e+11
とか出力されて駄目だった。 - longlong型は64bit整数型なので、答えは絶対整数になるはずだし、それでOKだった。
ABC206 B - Savings
問題
回答
Submission #41273909 - AtCoder Beginner Contest 206(Sponsored by Panasonic)
振り返り
- どの型だったら答えの値の最大値でも耐えうるかわからんかったのでとりあえず
long long型
とした long long型
の最大値はLONG_LONG_MAX
でいけた。- 問題自体は独力で解けた。
ABC165 B - 1%
問題
回答
Submission #41310512 - AtCoder Beginner Contest 165
振り返り
- 正解できず。
ans = ans * 1.01;
はNGans = ans + ans /100;
はOK- その違いは、小数点以下切り捨てるかどうか
- ChatGPTさんいわく下記
これらの2つのコードの主な違いは、入力値x
に到達するまでans
を増加させる方法にあります。
コード1では、
ans
はその値の1%を加算することで増加します(ans = ans + ans / 100;
)。この方法は整数算術を使用していて、ans / 100
が整数除算であるため、小数点以下の値は切り捨てられます。したがって、この方法ではans
の増加はかなり遅くなります。コード2では、
ans
はその値を1.01倍することで増加します(ans = ans * 1.01;
)。これは浮動小数点数算術を使用しており、ans
の増加はより速くなります。
したがって、入力値x
が非常に大きい場合(例えば、あなたが提供したような974755271730884810
)、コード1はコード2よりもはるかに多くのループを必要とします。これは、コード1がans
の増加を整数算術で計算するため、小数点以下の値が切り捨てられ、増加が遅くなるためです。