算数と数学:文字式
算数的な問題。頭がごっちゃになりやすいので頑張って求めよう。 問題へのリンク 問題概要 一般に、0 ℃ 未満の肉は凍っていて、0 ℃ の肉は凍っていることと凍っていないことがありえて、0 ℃ より温度の高い肉は凍っていない。また、 凍っている肉を 1 ℃ 温め…
頭がこんがらがる系の問題! 問題へのリンク 問題概要 高橋君と青木君を候補者とする選挙が行われ、 票が投票された。 現在開票中で、高橋君が 票、青木君が 票を得ている。この時点で残りの票にかかわらず勝敗が確定しているかどうかを判定せよ。 制約 は奇…
この手の for 文は早いうちに練習しておこう! 問題へのリンク 問題概要 2 つの正の整数 が与えられる。 を求めよ。 制約 考えたこと とは「 を 回かけた数」である。 このようなものは for 文による「繰り返し処理」で実装できる。具体的には、たとえば変数…
きっちり整理しよう! この手の問題は、混乱したらグラフをかくといい! 問題へのリンク 問題概要 高橋君は 歳の誕生日を迎えて、身長は cm となった。 高橋君は 歳までは毎年 cm ずつ伸びた 高橋君は 歳以降は身長が変化しなかった 高橋君の 歳のときの身長…
ちょっと細かいところミスった人も多いかもしれないね。 問題へのリンク 問題概要 ビ太郎は帰省することにした。 今日から 日後の午前に実家に着き、今日から 日後の午前に実家を去る。 それを聞きつけたビバ子は、今日から 日後の午後にビ太郎の実家を訪れ…
少し数学を頑張ろう! 問題へのリンク 問題概要 A 地点から B 地点に移動するのに 時間,B 地点から C 地点に移動するのに 時間かかる。 A 地点から B 地点を経由して C 地点に移動するとき、 時間 30 分以内に移動することができるか判定せよ。 制約 解法 …
文字式と、if 文の練習! 問題へのリンク 問題概要 2022 年 11 月 日の 週間後が 11 月 30 日以前ならば 1 を出力し、そうでなければ 0 を出力せよ。 解法 11 月 日の 週間後は、11 月換算で 日 となる。これが 30 以下であるかどうかを判定すればよい。 コ…
十の位と一の位から、整数値を求めよう。 問題へのリンク 問題概要 2 つの整数 が与えられる。 十の位が 、一の位が であるような 2 桁の正の整数を求めよ。 制約 考えたこと このような問いは、中学数学でよく学ぶ。 一般に、十の位が 、一の位が であるよ…
long long 型だとオーバーフローしてしまうので注意! unsigned long long 型なら大丈夫! 問題へのリンク 問題概要 0 と 1 からなる長さ 64 の数列 が与えられる。 の値を求めよ。 考えたこと 実は long long 型は、 以上 以下の整数しか表せない。今回扱う…
標準入出力と、四則演算の演算子の使い方を確認する問題。 問題へのリンク 問題概要 4 個の整数 が与えられる。 1 行目には、 の値を出力し、 2 行目には、"Takahashi" と出力せよ。 解法 標準入力を用いて整数値 の値を受け取ります。 その後、1 行目には (…
上手に考えることで、実装が複雑になりすぎないようにしたい。 問題へのリンク 問題概要 次の図で 番と 番がつながっているかどうかを判定せよ。 制約 考えたこと という制約を考慮すると、Yes となる場合は、次の 10 通りの場合がある。 これらを順に判定し…
平方根の求め方を確認しておこう 問題へのリンク 問題概要 地上 メートルの高さから見える水平線までの距離は と表される。 地上 メートルの高さから見える水平線までの距離を求めよ。 制約 は整数 解法 の値を求めればよい。 C++ では、 は関数 sqrt() を用…
算数系の問題! 問題へのリンク 問題概要 解法 入力の中に が含まれるが、これは結局使わない。こういう変数に惑わされないようにしよう。次の 2 つの場合に分けて考える。 のとき (上りのとき) のとき (下りのとき) 前者の場合は、"Yes" となる条件は と書…
例によって、一次予選の A 問題は教育的! 問題へのリンク editorials 問題概要 1 個 円の飴を 個と、 円の袋を 1 つ買う。 合計金額はいくらか求めよ。 解法 答えは です。 プログラムでは、整数値 A, B, C を標準入力で受け取って、整数値 A * B + C を標…
これは難しいですね。何も考えずに for 文で求めるのが比較的楽でしょうか。 問題へのリンク 問題概要 と番号のついた 人に、 枚のカードを配っていく。 人 から始めて、人 の順に 1 枚ずつカードを配るとき、最後のカードは誰に配られるでしょうか? 解法 1…
for 文を用いるのが楽だと思う。 問題へのリンク 問題概要 マグニチュード の地震は、マグニチュード の地震の何倍の強さか? (1 上がると 32 倍となる) 制約 解法 を 回かけた値を求めればよい (つまり )。 これを求めるためには、関数 pow() を用いるか、f…
不等式を頑張って実装! 問題へのリンク 問題概要 3 個の整数 が与えられる。 であるかどうかを判定せよ。 解法 if (A * A + B * B < C * C) によって判定できる。 #include <bits/stdc++.h> using namespace std; int main() { int A, B, C; cin >> A >> B >> C; if (A * A</bits/stdc++.h>…
不等式の問題! 問題へのリンク 問題概要 高橋君の投げたボールは、速度 で移動し、 秒後から 秒後の間に消える。 ボールから m の位置にいる青木君にとって、ボールが消えていないかどうかを判定せよ。 解法 消えている条件を不等式で書くと、次のようにな…
3-point shot で逆転できるという条件を、上手に数式に落とし込もう! 問題へのリンク 問題概要 バスケの試合で両チームの得点は 点である ( である)。 どちらかのチームに 3 点追加されたときに、逆転が起こるかどうかを判定せよ。 解法 のどちらが大きいか…
if 文を使ってもいいし、関数 max() を使ってもよい。 問題へのリンク 問題概要 整数 が与えられる。 ならば を出力せよ ならば 0 を出力せよ 解法 (1):if 文 if 文を用いて、 であるかどうかを判定して、処理を分けよう。 #include <bits/stdc++.h> using namespace std; </bits/stdc++.h>…
if 文を用いてもいいが、もっと楽にできる! 問題へのリンク 問題概要 0 か 1 である整数 が与えられる。 ならば 1 を出力し、 ならば 0 を出力せよ。 解法 if 文を用いてもよいが、 を出力するのが簡単だ。 #include <bits/stdc++.h> using namespace std; int main() { in</bits/stdc++.h>…
double 型を使いたくなる問題。実は使わなくても解ける。 問題へのリンク 問題概要 メートル離れた場所で待ち合わせがある。残り時間は 分である。 分速 メートルで向かうとき、待ち合わせ時間に間に合うか? 解法 分速 メートルで メートル進むのに要する時…
この手の「切り上げ処理」は、もう憶えてしまおう! 問題へのリンク 問題概要 個のたこ焼きを作りたい。 たこやきを作り始めてから、 秒おきに 個のたこ焼きを作る。 個のたこ焼きを作り切るのに最低何秒かかるか。 解法 たこやきを生産するターン数は、「 …
算数の素養は必要なく、ただ本当に計算式を実装する。 問題へのリンク 問題概要 整数 が与えられる。 の値を出力せよ。 解法 とは、 のことである。また、 とは、 のことである。 よって、 a + a * a + a * a * a の値を出力すればよい。 #include <bits/stdc++.h> using na</bits/stdc++.h>…
ちょっとした式変形のスキルも要求される。 問題へのリンク 問題概要 コンテストの参加回数 、表示レーティングは次のようになる。 のとき:内部レーティングに一致する のとき:内部レーティングから を引いた値となる 高橋君のコンテスト参加回数が で表示…
if 文の練習。 問題へのリンク 問題概要 円玉が 枚ある。 総額が 円以上ならば "Yes" を出力し、そうでなければ "No" を出力せよ。 解法 総額は 500 * K と表せるので、これが X 以上であるかどうかを判定すればよい。 #include <bits/stdc++.h> using namespace std; int m</bits/stdc++.h>…
ちょっと図形問題! でも、サンプルから法則を見つける解き方もできそう。 問題へのリンク 問題概要 半径 の円の面積が、半径 1 の円の面積の何倍であるかを答えよ。 解法 1:円の面積の公式 半径 の円の面積は である。これに対して、半径 の円の面積は、 …
「場合の数」の問題! 問題へのリンク 問題概要 3 桁の整数のうち、各桁の値が 1 以上 以下の整数であるものの個数を求めよ。 制約 解法 各桁ごとに 通りの選択肢があるので、3 桁の整数は 通り 考えられます。 これは重複順列などと呼ばれている考え方です…
これは本当に言われたとおりにやるだけ! 問題へのリンク 問題概要 整数 の値が与えられるので、 の値を答えてください。 解法 標準入力を用いて r の値を受け取り、3 * r * r の値を出力すれば OK。 #include <bits/stdc++.h> using namespace std; int main() { int r; ci</bits/stdc++.h>…
if 文を使ってもいいし、関数 max() を使ってもいい 問題へのリンク 問題概要 買いたいものがある。 円で 1 個買うことができる。 円持っている。 ただし、 個以上は要らない。何個買えるか。 解法 最後の「 個以上は要らない」がなければ、B / A が答えとな…