計蒜客載入數字(密題)
阿新 • • 發佈:2018-12-13
小蒜把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; }