2019-10-01から1ヶ月間の記事一覧

Project Euler 684 Inverse Digit Sum

問題 projecteuler.net 解法 各桁の数の和がxとなるような最小の整数 s(x) は必ず一番上の桁以外は全て9となる。 よって s(x) は以下のようになる。s(x) の和 S(x) を考える。 S(20)=1074だが、これは以下のようにして求まる。 s(1) = 1 ... s(9) = 9 s(10) …

ABC143 F - Distinct Numbers

問題 atcoder.jp 解法 K枚ずつ食べる時の最大の回数を求めるのではなく、H回食べるときの最大の1回に食べる枚数を求めることにする。 とする。H回食べると決めたとき、同じ数字を同時に食べないように選ぶ1回あたりの食べる枚数はとなる。例えば A = [1,1,1,…

AGC039 C - Division by Two with Something

問題 atcoder.jp 解法 各操作を観察すると、どちらも「最も下のビットをpopして反転して最も上にpushする」と言い換えられる。これをN回繰り返すと元の数のビットを反転させたものが得られるので、2N回繰り返すと必ず元の数が得られる。よって繰り返して元の…