けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

数学(整数問題)

AtCoder ABC 207 B - Hydrate (5Q, 灰色, 200 点)

これ結構難しい! 数式を丁寧に立てよう。 問題へのリンク 問題概要 箱に水色のボールが 個入っている。 「箱に 個の水色のボールと、 個の赤色のボールを入れる」という操作を繰り返すことで、赤色のボールの個数が水色のボールの個数の 倍以上となるように…

鉄則本 B04 - Binary Representation 2 (6Q, ★2)

「十進法 → 二進法」変換。これも鉄則本公式解説とは異なる方法でやってみよう。 問題へのリンク editorial 問題概要 二進法で表記された整数 が与えられる。 整数 の十進法表記を求めよ。 解法 たとえば、二進法で表された整数 1101 は、十進法では、次のよ…

鉄則本 A04 - Binary Representation 1 (6Q, ★2)

ここでは鉄則本に乗っているのとは異なる方法でやってみよう! 問題へのリンク 問題概要 整数 が与えられる。 を二進法表記したものについて、先頭を 0 埋めすることで 10 桁で答えよ。 解法:二進法とは 整数 を二進法で表したときの各桁の値が求められれば…

鉄則本 B02 - Divisor Check (7Q, ★1)

整数に対する for 文を用いての全探索です! 問題へのリンク 問題概要 以上 以下の整数のうち、100 の約数であるものは存在するか、判定せよ。 解法 github.com コード #include <bits/stdc++.h> using namespace std; int main() { int A, B; cin >> A >> B; bool res = fa</bits/stdc++.h>…

JOI 一次予選 2024 (第 2 回) B - 火曜日 (8Q, 難易度 1)

慣れていないと少し難しいかもしれない。 問題へのリンク editorial 問題概要 今日は日曜日である。 今日の 日後が火曜日であるならば 1 を、そうでないならば 0 を出力せよ。 解法 日後が火曜日であるための条件を考えましょう。 「0 日後は日曜日」「1 日…

AtCoder ARC 176 B - Simple Math 4 (1D, 水色, 400 点)

というコーナーケースにやられた! 問題へのリンク 問題概要 整数 が与えられる。 を で割った余りの一の位の値を求めよ。 (マルチテストケース) 制約 考えたこと まず最初に考えたのは「全体を で割った世界」で考えれば良いということ。 このことを正当化…

AtCoder ABC 223 A - Exact Price (8Q, 灰色, 100 点)

えぐいコーナーケースに注意! でもサンプルにあるね。 問題へのリンク 問題概要 財布に 円玉が 1 枚以上入っています。 財布に入っている合計金額がちょうど 円であるようなことが、あり得るかどうかを判定してください。 制約 考えたこと 基本的には「 が …

AtCoder ABC 220 A - Find Multiple (灰色, 100 点)

for 文を用いるのが楽だと思う。 問題へのリンク 問題概要 以上 以下の の倍数が存在するならば 1 つ求め、存在しない場合は -1 を出力せよ。 制約 考えたこと for 文を用いるのが最も楽だと思う。 について、 で割り切れるかどうかを判定していき、 割り切…

AtCoder ABC 209 A - Counting (灰色, 100 点)

とても教育的な問題! 問題へのリンク 問題概要 整数 が与えられる。 以上 以下の整数は何個あるか? 解法 まず、 の場合は、 以上 以下の整数は存在しないことに注意しよう。この場合は 0 個と答えれば良い。 それでは、 としよう。この場合は、 以上 以下…

AtCoder ABC 200 A - Century (灰色, 100 点)

切り上げ処理の問題! 問題へのリンク 問題概要 西暦 年は何世紀ですか? 解法 のとき、2 世紀 のとき、21 世紀 というように、 を 100 で割ったときの余りを切り上げたものが答えとなる。 これは、(N + 100 - 1) / 100 によって求められる (ここがピンと来…

AtCoder ABC 195 A - Health M Death (灰色, 100 点)

これは簡単! 剰余演算子「%」を確認しよう! 問題へのリンク 問題概要 2 個の整数 が与えられる。 が の倍数であるかどうかを判定せよ。 解法 が の倍数であるとは、 を で割った余りが 0 であるということです。 を で割った余りは H % M と書けます。 以…

AtCoder ABC 192 A - Star (灰色, 100 点)

一見「切り上げ処理」が必要だが、実は要らない! 問題へのリンク 問題概要 コインが 枚ある。 よりも大きい最小の の倍数まで、あと何枚か? 解法 を 100 で割ったあまりを としよう。このとき、次の の倍数までは だけ必要である。たとえ、 が 100 で割り…

AtCoder ABC 187 A - Large Digits (灰色, 100 点)

文字列として処理した方が楽。 問題へのリンク 問題概要 3 桁の正の整数 が与えられる。これらの整数の桁和の最大値を求めよ。 制約 整数 はそれぞれ文字列として受け取った方が楽だと思われる。そうすると、 たとえば、3 桁の整数を表す文字列 A について …

AtCoder ABC 181 A - Heavy Rotation (灰色, 100 点)

偶数か奇数かを判定する問題! 問題へのリンク 問題概要 高橋君の今日の状態は "White" である。 毎日 "White" と "Black" が入れ替わる。 日後の状態を答えよ。 解法 が偶数ならば、"White" が奇数ならば、"Black" である。 #include <bits/stdc++.h> using namespace std;</bits/stdc++.h>…

AtCoder ABC 168 A - ∴ (Therefore) (灰色, 100 点)

ちょっと一見面倒な問題。 問題へのリンク 問題概要 999 以下の正の整数 が与えられる。 解法 の一の位の値は N % 10 で取得できる。この値を調べればよい。 ここで、コツとして、if-else 文の最後の else のところが最も面倒なものが来るようにしよう。ここ…

AtCoder ABC 165 A - We Love Golf (7Q)

色んな解法がある! この手の数値的なものに対して「全探索」という解法を選択肢に持てるようにしていこう。 問題へのリンク 問題概要 3 個の正の整数 が与えられる。次の条件を満たす整数が存在するかどうかを判定せよ。 の倍数である 以上 以下である 制約…

AtCoder ABC 159 A - The Number of Even Pairs (灰色, 100 点)

nC2 系の問題は ABC-D などで頻出だが、その練習ができる問題! 問題へのリンク 問題概要 偶数の書かれたボールが 個 奇数の書かれたボールが 個 あります。これら 個のボールから 2 個選んで、書かれた数の和をとります。 この和が偶数になるような選び方は…

AtCoder ABC 157 A - Duplex Printing (灰色, 100 点)

この切り上げ処理はぜひ憶えておこう! 問題へのリンク 問題概要 高橋君は、全 ページから成る書類を両面印刷する。両面印刷では、1 枚の紙に 2 ページ分のデータを印刷することができる。 最小で何枚の紙が必要か求めよ。 解法 が偶数のときは、 は 2 で割…

AtCoder ABC 153 A - Serval vs Monster (灰色, 100 点)

これはとても教育的な問題!! 問題へのリンク 問題概要 HP が であるモンスターとサーバルは戦っている。 1 回の攻撃で HP を だけ減らすことができる。HP が 0 以下になるのに必要な攻撃回数を求めよ。 解法 (1) を で割ったときに、余りがあるならば追加…

AtCoder ABC 142 A - Odds of Oddness (灰色, 100 点)

いい感じの複合問題。この時期の ABC-A としては少し難しめ。 問題へのリンク 問題概要 正の整数 が与えられる。 以上 以下の整数をランダムに選ぶとき、それが奇数である確率を求めよ。 解法 以上 以下の 個の整数のうち、奇数の個数を とすると、求める確…

AtCoder ABC 125 A - Biscuit Generator (灰色, 100 点)

という表現が何を言っているんだ......と戸惑うかもしれない。これは、要は「ちょうど 秒後」も含むよということを言っている。 問題へのリンク 問題概要 ビスケット起動装置を起動してから、 秒後にそれぞれビスケットを 枚生成する。 起動してから 秒間の…

AtCoder ARC 167 E - One Square in a Triangle (銅色, 800 点)

天才構築ゲー。これ完全自力で一発 AC できて嬉しかった!! 問題へのリンク 問題概要 正の整数 が与えられる。次の条件を満たす三角形が存在するかどうかを判定し、存在すれ場合は 1 つ求めよ。 頂点がすべて格子点であり、座標値は 以上 以下である すべて…

AtCoder ARC 171 D - Rolling Hash (黄色, 600 点)

コンテスト後に解いた。こっちの方が解きやすかった。 問題へのリンク 問題概要 制約 考えたこと 最初は の指数を気にするのかな......などと考えていたが、考えていくうちに の値など、ただの飾りであることがわかってきた。 まず、問題の条件を言い換える…

AtCoder ARC 167 B - Product of Divisors (水色, 500 点)

面白かった! 問題へのリンク 問題概要 以上の整数 と非負整数 が与えられる。 の正の約数の総積が で最大何回割れるかを 998244353 で割った余りで求めよ。 制約 考えたこと 一般に、2 以上の整数 の正の約数の総積は、 の約数の個数を とすると となる。た…

AtCoder ABC 118 A - B +/- A (灰色, 100 点)

倍数判定は演算子「%」を用いる! 問題へのリンク 問題概要 2 つの正の整数 が与えられる。 が の約数ならば の値を出力し、そうでないならば の値を出力せよ。 解法 が の約数 (言い換えると、 が で割り切れる) であるかどうかは、 if (B % A == 0) という…

AtCoder ABC 109 A - ABC33 (灰色, 100 点)

パリティの問題。ここのところ、算数や数学の問題が続いている。 問題へのリンク 問題概要 1 以上 3 以下の整数 が与えられる。 が奇数 となるような 1 以上 3 以下の整数 が存在するかどうかを判定せよ。 解法 一般に、かけ算をするとき 偶数が 1 個でも含…

AtCoder ABC 108 A - Pair (灰色, 100 点)

「場合の数」の問題! 問題へのリンク 問題概要 1 以上 以下の正の整数から、偶数と奇数ひとつずつの組を選ぶ方法の個数を求めてください。 なお、選ぶ順番は考慮しません。 解法 まず、1 以上 以下の整数のうち、偶数の個数は K / 2 個である。よって奇数の…

AtCoder ABC 105 A - AtCoder Crackers (灰色, 100 点)

分配に関する面白い問題! 問題へのリンク 問題概要 枚のせんべいを 人に配る。 「最も多くのせんべいをもらった人」と「最も少ないせんべいをもらった人」の、もらったせんべいの個数の差を求めよ。 解法 もし、 が で割り切れるならば、全員に公平に分配で…

AtCoder ABC 102 A - Multiple of 2 and N (灰色, 100 点)

整数問題! 問題へのリンク 問題概要 整数 が与えられる。 と の最小公倍数を求めよ。 解法 一般に最小公倍数を求める方法としてはユークリッドの互助法が知られている。しかし、今回は次のように簡単に考えられる。 が 2 の倍数のとき:最小公倍数は が 2 …

AtCoder ABC 335 G - Discrete Logarithm Problems (橙色, 600 点)

この問題を思い出した! 問題へのリンク 問題概要 素数 と、 個の 1 以上 以下の整数 が与えられる。 を満たす整数 が存在するような の組の個数を数え上げよ。 制約 考えたこと 一瞬、原始根を考えたくなったが、原始根ではなく「位数」を考えた方が計算量…