zoukankan      html  css  js  c++  java
  • [Jobdu] 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述:

    亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他。问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

    输入:

    输入有多组数据,每组测试数据为一行。

    每一行有两个整数a,b(0<=a,b<=1,000,000,000)。

    输出:

    对应每个测试案例,输出a和b之间1出现的次数。 

    样例输入:
    0 5
    1 13
    21 55
    31 99
    
    样例输出:
    1
    6
    4
    7
    
    答疑:
    解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-8096-1-1.html
     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4  
     5 int a, b;
     6  
     7 int getOne(int n) {
     8     int cnt = 0;
     9     int m = n;
    10     int base = 1;
    11     while (m > 0) {
    12         cnt += m/10 * base;
    13         if (m%10 > 1) {
    14             cnt += base;
    15         } else if (m%10 == 1) {
    16             cnt += n%base + 1;
    17         }
    18         m /= 10;
    19         base *= 10;
    20     }
    21     return cnt;
    22 }
    23  
    24 int main() {
    25     while (cin >> a >> b) {
    26         if (a > b) swap(a, b);
    27         cout << getOne(b) - getOne(a-1) <<endl;
    28     }
    29     return 0;
    30 }
    31  
    32 /**************************************************************
    33     Problem: 1373
    34     User: hupo250
    35     Language: C++
    36     Result: Accepted
    37     Time:40 ms
    38     Memory:1520 kb
    39 ****************************************************************/
  • 相关阅读:
    smarty模板中如何嵌入javascript脚本
    正则表达式(一)
    c#获取凌晨时间
    启动VUE项目报错:Error: Cannot find module 'node-sass'
    安装VUE过程记录
    Jenkins自动化工具完整介绍
    使用VS开发C#的常用快捷键
    获取枚举中的描述值
    PDF链接转字节流输出
    MSSQL执行计划的优化建议
  • 原文地址:https://www.cnblogs.com/easonliu/p/4328687.html
Copyright © 2011-2022 走看看