1.Division by Two and Permutation CodeForces - 1624C
2.Divisible Array CodeForces - 1828A
这道题就是要通过/2的操作使得序列变成1~n的全排列。
1~n的全排列即1到n且互不相等,且所有数小于n
所以我们只需要遍历所有数,如果大于n就往下除2得新值。
且不能在1~n中重复,这里需要一个标记数组就行了。
如果最后1~n的标记均为1(即都有值入坑了0),那就输出YES,否则输出NO
代码如下:
这道题不要被样例给迷惑了,其实超级简单
看样例第i个数必须是i的n倍(n=1~xxxx)
且数列所有值的和必须能整除n
而第一个数,i=1,所以第一个数可以随意取,那么其他位置上的数我们只需要取i本身就行(相当于取了i的1倍,符合要求),那么第一个数取多少取决于该条件 且数列所有值的和必须能整除n
所以满足(sum(后面的数)+a【1】)%n = 0即可。
所以代码: