296 字
1 分钟
CF1463B题解
CF1463B题解
题意:
给你一个数组 ,其中有 。设 是数组 中所有元素的和。
如果 个整数组成的数组 漂亮,那么我们就把这个数组称为 :
- 从 到 的每个 都是 ;
- 对于数组 中的每一对相邻整数,要么是 除以 ,要么是 除以 (或者两者都是(或两者);
- .
思路:
对于构造合法解的题目,我们可以先想什么能够稳定的构造相邻整除的数组。再结合,不难推得 注意到存在,可以想到把每一个都设置成小于等于的最大的的幂。即有: 求和即有: 满足要求
代码:
void solve (){ int n; cin >> n; for (int i = 1; i <= n; i++) { int t; cin >> t; cout << (1LL << __lg(t)) << " \n"[i == n]; }}