[AtCoder] ABC 179 C – A x B + C
問題
方針
\( A, B \) を全探索
\( A, B \) を全探索します。\( A \) を固定した時、\( A \times b \geq N \) となるような \( b \) より大きいものを探索する必要はありません。
\( A\) を全探索
\( A \) を固定した時、
\[ B = \dfrac{N – C}{A}\]
となるので、このとき、\( B \) の最大値は \( C = 1 \)のときなので、最大値は
\[ \left \lfloor \dfrac{N-1}{A} \right \rfloor\]
となります。したがって、
\[ \sum_{a = 1}^{N} \left \lfloor \dfrac{N-1}{a} \right \rfloor\]
を求めます。
コード
\( A, B \) を全探索
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int N; cin >> N; ll cnt = 0; for (int a = 1; a <= N; a++) { for (int b = 1; b <= N; b++) { if (a * b >= N) break; cnt++; } } cout << cnt << "\n"; return 0; }
\( A\) を全探索
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int N; cin >> N; ll cnt = 0; for (int a = 1; a <= N; a++) { cnt += (N - 1) / a; } cout << cnt << "\n"; return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません