zoukankan      html  css  js  c++  java
  • C. Hexadecimal's Numbers

    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 0 组成的数字,就是二进制数字的值!

    把当前数字用10表示的最大数字,所代表的二进制的值就是答案。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<sstream>
    #include<algorithm>
    #include<queue>
    #include<deque>
    #include<iomanip>
    #include<vector>
    #include<cmath>
    #include<map>
    #include<stack>
    #include<set>
    #include<fstream>
    #include<memory>
    #include<list>
    #include<string>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    #define MAXN 503
    #define N 33
    #define MOD 10000007
    #define INF 1000000009
    const double eps = 1e-9;
    const double PI = acos(-1.0);
    string str;
    int main()
    {
        cin >> str;
        bool f = false;
        for (int i = 0; i < str.size(); i++)
        {
            if (f) str[i] = '1';
            else if (str[i] > '1')
            {
                str[i] = '1';
                f = true;
            }
        }
            
        LL ans = str[str.size() - 1] - '0', bas = 1;
        for (int i = str.size() - 2; i >= 0; i--)
        {
            bas *= 2;
            ans = ans + (str[i] - '0')*bas;
        }
        cout << ans << endl;
        return 0;
    }
  • 相关阅读:
    MySQL性能优化的最佳20+条经验
    memcached demo 应用例子
    关于 MySQL 主从复制的配置(转)
    java date 日期 利用 Calendar 实现增加一年月日时分秒
    Struts2中s:set标签和s:if标签小结
    hibernate oracle 配置序列 实现自动增长
    mysql5.1.47二进制版本的安装(转)
    Confluence3.4的安装和配置
    linux MemCache安装手册
    Java实现文件拷贝的4种方法(转)
  • 原文地址:https://www.cnblogs.com/joeylee97/p/7274122.html
Copyright © 2011-2022 走看看