有三种披萨:\(6\)、\(8\)、\(10\) 块披萨。制作时间分别需要:\(15\)、\(20\)、\(25\) 分钟。现在有 \(n\) 个人,每人需要一块披萨。询问使所有人能获得披萨的最快时间。
观察:发现三种披萨的性价比都一样。(否则按最优性价比贪心)
需要让得到的披萨数量 \(m \geq n\) 。
不妨让 \(n\) 对 \(6\) 取模,一种解为
- \(r = 0\) 全做 \(6\) 块披萨。
- \(r = {1, 2}\) 做一个 \(8\) 块披萨,再全做 \(6\) 块披萨。
- \(r = {3, 4}\) 做一个 \(10\) 块披萨,再全做 \(6\) 块披萨。
- \(r = 5\) 全做 \(6\) 块披萨。
注意 \(n \leq 6\) 时,做 \(6\) 块披萨。
view
#include <bits/stdc++.h>
typedef long long ll;
void solve() {
ll n; std::cin >> n;
int m = n % 6;
if (n <= 6) std::cout << 15 << '\n';
else if (m == 0 || m == 5) std::cout << (n + 5) / 6 * 15 << '\n';
else if (m == 1 || m == 2) std::cout << (n / 6) * 15 + 5 << '\n';
else if (m == 3 || m == 4) std::cout << (n / 6) * 15 + 10 << '\n';
}
int main() {
int _ = 1; std::cin >> _;
while ( _-- ) { solve(); }
return 0;
}