for 文を多重にするタイプの全探索!!!
問題概要
整数 が与えられる。 以上 以下の整数の中から重複なしで 3 個選んで、総和が となる組合せが何通りあるか求めよ (順番はなし)。
制約
考えたこと
for 文を多重にするタイプの全探索を書く練習に。計算量は 。
C++
#include <bits/stdc++.h> using namespace std; int main() { int N, X; while (cin >> N >> X, N) { int res = 0; for (int i = 1; i <= N; ++i) { for (int j = i+1; j <= N; ++j) { for (int k = j+1; k <= N; ++k) { if (i + j + k == X) ++res; } } } cout << res << endl; } }
Python
while True: N, X = map(int, input().split()) if N == 0: break res = 0 for i in range(1, N+1): for j in range(i+1, N+1): for k in range(j+1, N+1): if i + j + k == X: res += 1 print(res)