#C语言题目 #二进制

img
想问下这个题目有没有什么好的思路?
穷举法的话会超出题目给的时间限制
一开始想的是设置一个数组来存放二进制的01,然后通过类似于全排列的算法来解决
不知道大家有没有什么更好的解决方法

可以利用n位二进制数中有C(k,n)个含有k个1的数,例如四位二进制数里含有2个1的数为C(2,4)=4*3/2=6个。
这样可以利用这个规律来提高效率,比如1-18这个范围就减少到16-18,算这个范围即可。

什么时间,先说一下