Educational Codeforces Round 96 (Rated for Div. 2) A. Number of Apartments

发布时间 2023-10-13 19:17:19作者: zsxuan

有三种建筑:三室厅、五室厅、七室厅。每个房间严格有一扇窗户。现在有 \(n\) 扇窗户,询问完全用完这些窗户的情况下,\(3, 5, 7\) 室厅各有多少间。输出任意一种答案,或者回答不可能。

假设一定有解,显然可以选择 \(mod\) 任意一个数贪心,不妨选最小的 \(3\) 。假设答案为 \(a, b, c\)

  • \(n \equiv 0\ (\mod 3)\)\(a = n / 3, b = 0, c = 0\)
  • \(n \equiv 1\ (\mod 3)\)\(a = (n - 6) / 3, b = 0, c = 1\)
  • \(n \equiv 2\ (\mod 3)\)\(a = (n - 3) / 3, b = 1, c = 0\)

于是只需要单独讨论 \(n < max(3, 6)\) 的情况。显然 \(n = 1, 2, 4\) 时无解。

view
#include <bits/stdc++.h>
typedef long long ll;
void solve(){
	int n; std::cin>> n;
	if (n == 1 || n == 2 || n == 4) std::cout << -1 << "\n";
	else {
		int r = n % 3;
		if (r == 0) std::cout << n / 3 << ' ' << 0 << ' ' << 0 << "\n";
		else if (r == 1) std::cout << (n - 6) / 3 << ' ' << 0 << ' ' << 1 << "\n";
		else if (r == 2) std::cout << (n - 3) / 3 << ' ' << 1 << ' ' << 0 << "\n";
	}
}
int main() {
	int _ = 1; std::cin >> _;
	while (_--) {solve();}
	return 0;
}