zoukankan      html  css  js  c++  java
  • pat 甲级 1049. Counting Ones (30)

    1049. Counting Ones (30)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    The task is simple: given any positive integer N, you are supposed to count the total number of 1's in the decimal form of the integers from 1 to N. For example, given N being 12, there are five 1's in 1, 10, 11, and 12.

    Input Specification:

    Each input file contains one test case which gives the positive N (<=230).

    Output Specification:

    For each test case, print the number of 1's in one line.

    Sample Input:
    12
    
    Sample Output:
    5
    思路:
    对于一个数的abcde,先计算其中的某一位上出现1的个数,不妨考虑百位上的c,若c为0,则百位上出现1的个数和c的高位ab有关,具体个数是ab*digit,这里c是在百位上,那么digit为100;
    若c=1,则百位上出现1的个数为(ab*digit)+de+1,其中de为abcde中c的低位.9=>c>=2时,百位上出现1的个数为(ab+1)*digit.
    AC代码:
    #define _CRT_SECURE_NO_DEPRECATE
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<set>
    #include<queue>
    #include<map>
    using namespace std;
    #define INF 0x3f3f3f
    #define N_MAX 200+5
    #define M_MAX 100000+20
    typedef long long ll;
    int n ,cnt = 0;
    int Count(int n) {
      int cnt = 0,digit=1;
      while (n / digit != 0) {
        int higher = n / (digit * 10);
        int lower = n - (n / digit)*digit;//!!
        int cur = n / digit % 10;
        switch (cur){
        case 0:
          cnt += higher*digit;
          break;
        case 1:
          cnt += higher*digit + lower + 1;
          break;
        default:
          cnt += (higher + 1)*digit;
          break;
        }
        digit *= 10;
      }
      return cnt;
    }
    
    int main() {
      while (cin>>n) {
        cnt = Count(n);
        cout << cnt << endl;
      }
      return 0;
    }
  • 相关阅读:
    2块硬盘宝塔只能读取一块?宝塔一键磁盘挂载命令
    Python爬虫入门笔记
    linux搭建web(网站)环境
    织梦dedecms管理模块管理不动卡死解决办法
    php7.1安装swoole扩展
    Linux下centos7、PHP7.1安装Redis扩展教程
    centos7利用yum安装lnmp的教程(linux+nginx+php7.1+mysql5.7)
    Linux各目录及每个目录的详细介绍
    Linux samba的配置和使用
    PHP abstract与interface之间的区别
  • 原文地址:https://www.cnblogs.com/ZefengYao/p/8561610.html
Copyright © 2011-2022 走看看