CF1651B Prove Him Wrong Solution

  1. 1. Solution

Solution

题目要求对于任意 都要满足

有绝对值,不妨 。所以有

解得

所以只要让数等于前面那个数的三倍即可。初始数为 。(升序,对于任意 都满足,因为是绝对值对称的)

注意到,样例中有输出 NO 的情况。是什么原因呢?

题目中有限制 。实际上最大的数应该是 。所以

那么 Code 长这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>
using namespace std;

int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
if(n>19) puts("NO");
else
{
puts("YES");
int now=1;
for(int i=1;i<=n;i++) printf("%d ",now),now*=3;
puts("");
}
}
}