演算子「/」「%」を用いる問題
演算子「%」を上手に使う系の数学問題。 問題へのリンク 問題概要 種類のゴミがある。ゴミ は、 で割って 余る日に捨てることができる。 次の 個のクエリに答えよ。 【クエリ】 ゴミ を、 日目以降に捨てたい。最短で捨てることのできる日を答えよ。 制約 考…
ちょっとした算数の問題! 問題へのリンク 問題概要 サイコロを転がしていく。サイコロの上の目の値を足していく。 その総和が 以上となるまでの最小回数を求めよ。 制約 考えたこと 6, 5, 6, 5, ... と繰り返していくのが最適である。それを求めるために、…
ちょっとした算数的な考え方が必要になる問題 問題へのリンク 問題概要 JOI 君は以下の行動を行動 A → 行動 B → 行動 A → ⋯ のように交互に繰り返す。 行動 A:3m 前に進む 行動 B:2m 後ろに戻る 行動を合わせて 回行うとき、何m進むか? 解法 このような問…
とても易しい算数の問題! 問題へのリンク 問題概要 円もっている。 1 個 5 円の鉛筆を何本買えるか? 解法 答えは「 を 5 で割った商」となります。これは C++ では A / 5 と書けます。 コード #include <bits/stdc++.h> using namespace std; int main() { int A; cin >> </bits/stdc++.h>…
算数的な問題 問題へのリンク 問題概要 高橋君は金色の硬貨が好きです。自分が持っている 500 円硬貨 1 枚につき 1000、5 円硬貨 1 枚につき 5 の「嬉しさ」を得る。 高橋君が 円もっているとき、高橋君の「嬉しさ」の最大値はいくらか? 制約 考えたこと コ…
意外と、こういうの最初は詰まるかもしれない! 問題へのリンク 問題概要 英小文字からなる長さが奇数の文字列 が与えられるので、 の中央の文字を出力せよ。 考えたこと の先頭の文字を 0 文字目と考えることにする。結論から言えば、 の長さを としたとき…
切り上げ処理! 問題へのリンク 問題概要 鉛筆を 本以上買いたい。買うための手段として、次の 2 セットがある。いずれかのセットを選び、選んだセットをいくつか購入することとする。両方のセットを選ぶことはできない。 セット X:1 セットあたり 本あり、…
サーバル問題 (ABC 153 A) の焼き直し問題。今度は制約が大幅に強化して、long long 型についても学ぶ問題となっている。 問題へのリンク 問題概要 体力が の敵がいます。あなたは、1 回攻撃をすることで敵の体力を 減らすことができる。 敵の体力を 0 以下…
プログラミングをしていると、時々「割り算したときに余りがあったら商を 1 増やしたい」ということがあります。今回は、その処理をワンライナーで書く方法を考えましょう! 1:問題設定 早速ですが、次の問題を考えてみましょう! 問題 個のりんごに詰めて…
1 秒ごとにシミュレーションする方法と、数学的に 2 人の休憩時間をそれぞれ求める方法とがある。どちらもできるようにしておきたい! ここでは、数学的に処理する方法を書く。 問題へのリンク 問題概要 高橋君は「 秒間秒速 メートルで歩き、 秒間休む」こ…
閏年の問題! 問題へのリンク 問題概要 1583 以上 2024 以下の整数 が与えられる。なお、西暦 年の日数は、 が 4 の倍数でないとき:365 日 が 4 の倍数で、かつ 100 の倍数でないとき:366 日 が 100 の倍数で、かつ 400 の倍数でないとき:365 日 が 400 …
レーティングネタ問題! 問題へのリンク 問題概要 1 以上 299 以下の整数 が与えられる。 よりも大きい最小の 100 の倍数から を引いた値を求めよ。 解法 (1):場合分けして解く 場合分けして考えてしまうのが確実かもしれない。 のとき: より大きい最小の …
シミュレーションで解くか、数学的に解こう! 問題へのリンク 問題概要 シャンプーが mL 余っている。 F さん、M さん、T さんが順に mL ずつ使っていく。最初にシャンプーが足りなくなる人が誰になるかを求めよ。 解法 (1):シミュレーション まずは、シャ…
落ち着いて整理していこう! 問題へのリンク 問題概要 以上の最小の 4 で割って 2 余る整数を求めよ。 制約 考えたこと を 4 で割った余りによって場合分けして考えよう。 が 4 で割り切れるとき:2 足すことで「4 で割って 2 余る整数」になるので、 が答え…
整数として扱っても解けるけど、文字列として処理するのが楽だと思う! 問題へのリンク 問題概要 100 以上の 3 桁の整数 が与えられるので、 の下二桁を出力せよ。 解法 3 桁の整数値を文字列 N として入力を受け取ろう。たとえば、459 という整数は、"459" …
for 文のループカウンタ が偶数か奇数かに応じて処理を変える問題! 問題へのリンク 問題概要 長さが奇数 の文字列 が与えられる。 この文字列に対して、次の操作をすることで、"IOIOIO...OI" というように "I" と "O" を繰り返す文字列にしたい。操作回数の…
整数の切り上げの問題。意外と正確に解くのは大変かもしれない。 問題へのリンク 問題概要 ベースとなるアイスクリームの金額は 250 円で、高さは cm である。追加のアイスクリームは 1 個につき 100 円で、1 個追加するごとにアイスクリームタワーの高さが …
シミュレーションしてもいいし、数学的に綺麗に解くこともできる! 問題へのリンク 問題概要 時計は 1 〜 12 を繰り返す。 時の 時間後は、何時であるかを答えよ。 制約 解法 (1):シミュレーション から出発して、 回以下のことを繰り返せばよい。 1 増やす…
数値を文字列型で受け取るのが楽だと思われる。 問題へのリンク 問題概要 2 桁の整数 が与えられる。 がゾロ目であるかどうかを判定せよ。 解法 (1): を文字列型で受け取る 最も楽だと思われる方法は、 の値を文字列型で受け取ることだと思われる。たとえば…
切り上げ処理の練習! 問題へのリンク 問題概要 円ある。10 円増やすことを繰り返して 円以上になるようにしたい。 10 円増やす操作を最小で何回やればよいかを求めよ。 解法 まず、 のときは、もともと 10 円を増やす必要はないので 0 回になる。 の場合は…
算数的な感覚を磨こう! そして、浮動小数点型の値の出力方法を確認しよう。 問題へのリンク 問題概要 水圧は水深のみに依存し、水深 [m] の場所では [MPa] になるものとします。 水深 [m] の場所の水圧は何 [MPa] ですか? 解法 答えは MPa となる。 ただし…
余りを求めるための剰余演算子「%」を確認しておこう! 問題へのリンク 問題概要 正の整数 が与えられるので、 を 21 で割った余りを出力せよ。 解法 X を 21 で割った余りは、演算子「%」を用いて、 X % 21 によって求められます。 コード #include <bits/stdc++.h> using </bits/stdc++.h>…
慣れていないと少し難しいかもしれない。 問題へのリンク editorial 問題概要 今日は日曜日である。 今日の 日後が火曜日であるならば 1 を、そうでないならば 0 を出力せよ。 解法 日後が火曜日であるための条件を考えましょう。 「0 日後は日曜日」「1 日…
えぐいコーナーケースに注意! でもサンプルにあるね。 問題へのリンク 問題概要 財布に 円玉が 1 枚以上入っています。 財布に入っている合計金額がちょうど 円であるようなことが、あり得るかどうかを判定してください。 制約 考えたこと 基本的には「 が …
for 文を用いるのが楽だと思う。 問題へのリンク 問題概要 以上 以下の の倍数が存在するならば 1 つ求め、存在しない場合は -1 を出力せよ。 制約 考えたこと for 文を用いるのが最も楽だと思う。 について、 で割り切れるかどうかを判定していき、 割り切…
切り上げ処理の問題! 問題へのリンク 問題概要 西暦 年は何世紀ですか? 解法 のとき、2 世紀 のとき、21 世紀 というように、 を 100 で割ったときの余りを切り上げたものが答えとなる。 これは、(N + 100 - 1) / 100 によって求められる。ここがピンと来…
これは簡単! 剰余演算子「%」を確認しよう! 問題へのリンク 問題概要 2 個の整数 が与えられる。 が の倍数であるかどうかを判定せよ。 解法 が の倍数であるとは、 を で割った余りが 0 であるということです。 を で割った余りは H % M と書けます。 以…
一見「切り上げ処理」が必要だが、実は要らない! 問題へのリンク 問題概要 コインが 枚ある。 よりも大きい最小の の倍数まで、あと何枚か? 解法 を 100 で割ったあまりを としよう。このとき、次の の倍数までは だけ必要である。たとえ、 が 100 で割り…
割り算の練習! 問題へのリンク 問題概要 トラックには合計で キログラム以下の荷物を載せることができます。 このトラックに、1 個 キログラムのレンガを最大でいくつ載せることができますか? 解法 中学 1 年生の数学「文字と式」を習うときの気持ちを思い…
偶数か奇数かを判定する問題! 問題へのリンク 問題概要 高橋君の今日の状態は "White" である。 毎日 "White" と "Black" が入れ替わる。 日後の状態を答えよ。 解法 が偶数ならば、"White" が奇数ならば、"Black" である。 #include <bits/stdc++.h> using namespace std;</bits/stdc++.h>…