题目大意:给出数n(1<=n<=10^9),求不超过n,只由0、1构成的数的个数。
分析:
1位数:1
2位数:10、11
3位数:100、101、110、111
……
即有:
k位数:a、b
k+1位数:a*10,a*10+1,b*10,b*10+1。
#include<bits/stdc++.h>
using namespace std;
int ans=0;
void get(int x,int n)
{
if(x>n) return;
++ans;
get(10*x,n);
get(10*x+1,n);
}
int main()
{
int n;
cin>>n;
get(1,n);
cout<<ans<<endl;
return 0;
}