9C - Hexadecimal's Numbers
問題
自然数nが与えられる。各桁が0と1だけで表される数が、1からnの範囲にいくつあるか答えよ。(n<=10^9)
解法
2進表記を10進数とみなした数を作って比較する。
コード
int tob(int n){ int b = 0; stack<int> stk; while(n){ stk.push(n%2); n/=2; } while(!stk.empty()){ b = b*10 + stk.top(); stk.pop(); } return b; } int main(){ int n; cin>>n; FOR(ans,2,1024){ int bnum = tob(ans); if(bnum > n){ cout<<ans-1<<endl; break; } } return 0; }