計算時間の意識が必要になる問題! 鉄則本の問題なのでメモ程度に。
問題概要
赤・青・白の 3 枚のカードがあり、それぞれに 1 以上 以下の整数を書き込む。
3 枚のカードの数の合計を にする書き方は何通りあるか?
制約
メモ
赤・青・白のカードに書き込む整数を としよう。このとき
という関係が成り立つ。よって、 の値を決めると、
の値が決まる。このことを利用して計算量を改善しよう。
詳細は鉄則本参照。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, K; cin >> N >> K; int res = 0; for (int x = 1; x <= N; ++x) { for (int y = 1; y <= N; ++y) { int z = K - (x + y); // 残りカード if (1 <= z && z <= N) ++res; } } cout << res << endl; }