2.4
问题1:1的数目
问题2:F(N)=N的最大N是多少
扩展题:二进制1的数目问题1:
int onenumber(int n)
{
int num=0,low=0,cur=0,high=0,pac=1;
while(n/pac!=0)
{
low=n-(n/pac)*pac;
cur=(n/pac)%10;
high=(n/pac)/10;
switch(cur)
{
case 0:
num+=high*pac;
break;
case 1:
num+=high*pac+low+1;
break;
default:
num+=(high+1)*pac;
break;
}
pac*=10;
}
return num;
}
扩展题:
int ext(int n)
{
int num=0,low=0,cur=0,high=0,pro=1;
while(n/pro!=0)
{
low=n-(n/pro)*pro;
cur=(n/pro)%2;
high=(n/pro)/2;
switch(cur)
{
case 0:
num+=(high-1)*pro+low+1;
case 1:
num+=(high)*pro+low+1;
}
pro*=2;
}
return num;
}