zoukankan      html  css  js  c++  java
  • 51Nod ----1009 数字1的数量

    基准时间限制:1 秒 空间限制:131072 KB

    给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。
    例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。

    Input
    输入N(1 <= N <= 10^9)

    Output
    输出包含1的个数

    Input示例
    12
    Output示例
    5

    思路:
    可以从数字中找关系。例如:n = 1234时,个位上的1有多少个?答案很显然是124个。
    因为每10个数就有一个个位1,则1234/10= 123 而明显1231也有个位1,所以是124个。
    那么十位1呢?答案是130个。同样我们可以分析出100个数里有10个十位1,则很容易算出130。
    那么我们推广开来发现每个位上的1的数量受其高位,当前位和低位的影响。大家可能一想觉的
    这不都屁话吗?高位+当前位+低位不就是n吗?——确实,不过这种拆开的思路很重要。

    代码:

    #include <iostream>
    
    using namespace std;
    
    typedef long long ll;
    
    ll QO(ll N){
    
        ll sum = 0;
        ll now,high,low;
    
        ll i = 1;
        while(N/i){
            now = (N%(i*10))/i;
            high = N/(i*10);
            low = N - (N/i)*i;
    
            if(now > 1)sum += (high+1)*i;
            else if(now == 1)sum += high*i + low+1;
            else if(now == 0)sum += high*i;
    
            i *= 10;
        }
    
        return sum;
    
    }
    
    int main(){
    
        ll N;
        cin>>N;
    
        cout<<QO(N)<<endl;
    
        return 0;
    }
  • 相关阅读:
    Django之POST GET与前后端交互
    Django中用户权限模块
    Django运算表达式与Q对象/F对象
    Django中Middleware中间件
    Form表单 JSON Content-type解析
    浅析ajax原理与用法
    浅析Django之session与cookie
    浅谈HTTP协议
    Django 项目搭建(ubuntu系统)
    h5 和之前版本的区别
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514220.html
Copyright © 2011-2022 走看看