CF1555A题解

  • 分析

    首先对于小于 \(6\) 的数答案一定是 \(15\)
    然后发现 \(6、8、10\) 分别是 \(3、4、5\) 的二倍,而且对于三种做法做一块披萨所用的时间都是一样的,所以只要一个数能被这三个数凑出来,最后的总用时就是这个数乘以做一块披萨所用的时间。
    \(3、4、5\) 作为 \(3、3 + 1、3 + 2\) 可以凑出所有大于 \(3\) 的数,具体凑法是全凑 \(3\),最后余 \(1\) 就把最后一个 \(3\) 换成 \(4\),余 \(2\) 就换成 \(5\)
    所以 \(6、8、10\) 可以凑出所有大于 \(6\) 的偶数,由于披萨只能做多不能做少,所以如果 \(n\) 是偶数,要将 \(n\) 加一变成奇数。
    观察到一块披萨需要用 \(\frac{5}{2}\) 分钟做,所以最后的答案为 \(\frac{5n}{2}\)
    数据范围为 \(1 \leq n \leq 10^{16}\),所以需要开 long long。

  • 代码

#include <iostream>
#define int long long
using namespace std;
constexpr int MAXN(1000007);
int T, n;
inline void read(int &temp) { cin >> temp; }
inline void work() {
	read(n);
	if (n < 6)  return cout << "15" << endl, void();
	if (n & 1)  ++n;
	return cout << n / 2 * 5 << endl, void();
}
signed main() {
	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
	read(T);
	while (T--)  work();
	return 0;
}
posted @ 2023-10-25 15:32  Kazdale  阅读(185)  评论(0编辑  收藏  举报