C 题意 定义p-binary为2^x+p 现在给你一个数x,和一个p. 问你最少用多少个p-binary能构造出x,如果没有输出-1 题解 转化为: x = 2^x1 + 2^x2 + ... + 2^xn + n*p 首先我们知道任何数都能用二进制表示,如果p=0的话,肯定是有解的.那么答案最少都是x的2进制1的个数. 另外什么情况无解呢,即x-n*p<0的时候肯定无解,可以更加有优化为x-n*p<n的时候无解. 答案实际上就是n,我们从小到大枚举n,然后check现在的2进制中1的个数是…