1. 程式人生 > >計蒜客載入數字(密題)

計蒜客載入數字(密題)

小蒜把1-n這n個數字寫進記憶體,但是除了用二進位制格式寫的數字(只包含0,1的數字)都失敗了,現在他想知道有多少個數字載入成功了。

輸入格式 一個整數 n(1≤n≤10^9)

輸出格式 一個整數表示載入成功的數字個數

樣例輸入

10

樣例輸出

2

這道題思路就是列舉1-n,把它轉化成二進位制,再把這個二進位制當十進位制使,列舉加計數,比較好想

#include<iostream>
#include<string>
using namespace std;
int num=0;
long long judge(int n)
{
    int b[10100]={0};
    long long ans=0;
    int con=0;
    while(n)
    {
    	b[++con]=n%2; //cout<<b[con];
        n/=2;
    }
    for(int i=con;i>0;i--)
    {
        ans=ans*10+b[i];
    }
    return ans;
}
int main()
{
    //freopen("hex.in","r",stdin);
    //freopen("hex.out","w",stdout);
    int n;
    cin>>n;
    //cout<<judge(n);
    for(int i=1;i>=0;i++)
    {
        int a=judge(i);
        if(a<=n) {num++; /*cout<<a<<"-";*/}
        else break;
    }
    cout<<num;
    return 0;
}