1.首先需要掌握二进制数的一种特性,00=0,01=1,10=2,11=3.每一个二进制的值代表他前面的二进数的个数,比如11=3,他的前面就有三个二进制的数字,不过在本题中,题目数据是1-n,故把0抛弃掉,答案就变成了3-1=2个,但还要加上自身的话,就还是二进制的值.比如10=2,前面有01和10.11=3,前面有01 10 11.以此类推.2.那么问题就转化成了要求出小于等于给出十进制数字的最大二进制数,求出他的值即可.比如123,最大就是111,结果就是7.3. 问题转化成求最大的二进制…