Division by Two and Permutation AND Divisible Array

43 阅读1分钟

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即可。

所以代码: