Codeforces Round #716 (Div. 2)

前言:第2次打Codeforces ,又是被虐…
成绩:rating :??不知道在搞什么,系统分数重算中虽然也没多少分

通过:A
看了BC...无从下手

A. Perfectly Imperfect Array
     给出一个数组,问:是否存在这个数组的某个子序列,其所有元素
 的积不是一个完美数(完美数:某个整数的平方)。
     水题,若一个子序列的积B为完美数,假设B = A x A , 此时混进去
 一个不完美数,则积变为BxC = Axsqrt(C) x Axsqrt(C) 就不完美啦,所
 以只要数组有一个不完美数就可以啦。
 
 B. AND 0, Sum Big
     给出整数n和k,你需要求出这样的数组的最多的数量:(有n个元素   
 的数组,所有的的元素在0~2*k-1之间,所有元素的与 为0 且所有元  
 素的和尽可能大)。
     巧妙思维题。
     二进制中,两个数与,只要一个数的第i位是0,则两个数与的结果
 的第i位就为0。所以我们要每一位有1个0。
     因为元素和要尽可能大,所以不妨先设所有元素都为2*k-1,这样所
 有元素的二进制都有k位,且每位都是1。我们需要把k个0分配到这些
 数上,那么就变成每次选择一个数的第i(0~k)位变成0,每次有n中
 选择,要选择k次,那么选择的总方案数为n^k。
 
 C. Product 1 Modulo N
     给出整数n,选择1~n-1的最长子序列,其元素乘积prod%n==1。
     恶心数学性质题。
     我们先看看1~n-1中那些数不能选,这里由题目可以关联到一个公
 式:gcd(prod%n,n) == gcd(prod,n) , 若prod%n==1,则
 gcd(prod%n,n) == gcd(prod,n) == 1,这意味着prod与n是互质的,因此
 所有不与n互质的数,不选。
     对于所有与n互质的数,乘积为prod。
     (1)若prod%n==1,那么这些数字就是题目的解;
     (2)若prod%n!=1,设prod%n==p,已知prod与n互质,gcd(prod,n) == 
 gcd(p,n) == 1,得p与n互质。所以p是已经被选到的数字,把他去掉,
 就会有prod%n==p  --->   prod/p%n==p/p==1 , 因此在与n互质的子序
 列中去掉p即可。

猜你喜欢

转载自blog.csdn.net/m0_45699242/article/details/115918380