cf9C. Hexadecimal's Numbers

来源:互联网 发布:淘宝详情页的制作 编辑:程序博客网 时间:2024/04/28 23:25

C. Hexadecimal's Numbers
time limit per test
1 second
memory limit per test
64 megabytes
input
standard input
output
standard output

One beautiful July morning a terrible thing happened in Mainframe: a mean virus Megabyte somehow got access to the memory of his not less mean sister Hexadecimal. He loaded there a huge amount of n different natural numbers from 1 to n to obtain total control over her energy.

But his plan failed. The reason for this was very simple: Hexadecimal didn't perceive any information, apart from numbers written in binary format. This means that if a number in a decimal representation contained characters apart from 0 and 1, it was not stored in the memory. Now Megabyte wants to know, how many numbers were loaded successfully.

Input

Input data contains the only number n (1 ≤ n ≤ 109).

Output

Output the only number — answer to the problem.

Examples
input
10
output
2
Note

For n = 10 the answer includes numbers 1 and 10.

题意:查找1-n中有多少数仅由0和1组成

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<list>#include<queue>#include<vector>using namespace std;const int maxn=10010;long long ans=0;void dfs(long long n,long long num,long long cnt){if(num>n)return ;if(cnt==0){ans++;return ;}dfs(n,num*10+1,cnt-1);dfs(n,num*10,cnt-1);}int main(){long long i,j,k,n;scanf("%lld",&n);long long temp=n;int cnt=0;while(temp){temp/=10;cnt++;}for(i=1;i<cnt;++i){ans=ans+(1<<(i-1));}dfs(n,1,cnt-1);printf("%lld\n",ans);return 0;}


0 0
原创粉丝点击