「単調増加かどうか判定」は典型。そのような処理の実装に慣れよう!
問題概要
長さ の数列 が与えられる。この数列が以下の条件を全て満たすかどうかを判定せよ。
- 広義単調増加である
- すべて 100 以上 675 以下である
- すべて 25 の倍数である
解法
この手の「全て満たすかどうかを判定せよ」という問題では、判定する関数を用意すると実装しやすい。
関数の中で if (条件を満たさない) return false;
という形の文を連ねていけばよい。
コード
#include <bits/stdc++.h> using namespace std; bool judge(vector<int> S) { // 単調増加でなかったら false for (int i = 0; i+1 < S.size(); ++i) { if (S[i] > S[i+1]) return false; } // 100 以上 675 以下でないものはダメだし、25 の倍数でないものもダメ for (auto a : S) { if (a < 100 || a > 675) return false; if (a % 25 != 0) return false; } // すべてクリアしたら true return true; } int main() { vector<int> S(8); for (int i = 0; i < 8; ++i) cin >> S[i]; if (judge(S)) cout << "Yes" << endl; else cout << "No" << endl; }