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
    

    暴力枚举超时,经过探究,发现可以算出每一位是1的个数,对于这种找规律的题,我们可以观察简单的例子来推出规律,写出程序,测试复杂情况是否可行。

    具体规律看代码,讲起来很复杂。

    #include <bits/stdc++.h>
    
    using namespace std;
    
    int N;
    int total;
    
    void getOnes(int n, int m, int cnt) {
        if(n == 0) return;
        int a = n % 10;
        int b = n / 10;
        int c = cnt;
        int d = 1;
        while(c--) {
            d *= 10;
        }
        if(a < 1) {
            total += b*d;
        }
        else if(a > 1) {
            total += (b+1)*d;
        }
        else {
            total += b*d+m+1;
        }
        m += a*d;
        getOnes(b, m, cnt+1);
    }
    
    int main()
    {
        cin>> N;
        getOnes(N, 0, 0);
        cout<< total;
        return 0;
    }
  • 相关阅读:
    Space Ant(极角排序)
    Marriage Match II(二分+并查集+最大流,好题)
    Leapin' Lizards(经典建图,最大流)
    Food(最大流)
    99. Recover Binary Search Tree
    97. Interleaving String
    100. Same Tree
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
  • 原文地址:https://www.cnblogs.com/ACMessi/p/8442746.html
Copyright © 2011-2022 走看看