[Algorithm] 3. Digit Counts

Posted jjlovezz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Algorithm] 3. Digit Counts相关的知识,希望对你有一定的参考价值。

Description

Count the number of k‘s between 0 and nk can be 0 - 9.

Example

if n = 12, k = 1 in

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

we have FIVE 1‘s (1, 10, 11, 12)

Answer


    /**
     * @param k: An integer
     * @param n: An integer
     * @return: An integer denote the count of digit k in 1..n
     */
    int digitCounts(int k, int n) {
        // Check every digit from 0 to n.
        int count, temp, i = 0;
        for ( i=0; i<=n; i++ )
        {
            temp = i;
            do
            {
                // Check the ones and tens place respectively for the digits between 10 to 99.
                if ( (temp >= 10) && (temp < 100) ) {
                    if ( (temp/10) == k )   count++;
                    if ( (temp%10) ==k )    count++;
                } else {    // Check the ones place only for other cases.
                    if ( (temp%10) == k )
                        count++;
                }
                
                temp /= 10;
            } while (temp >= 10);
        }

        return count;        
    }

 

 

以上是关于[Algorithm] 3. Digit Counts的主要内容,如果未能解决你的问题,请参考以下文章

POJ3187 Backward Digit Sums

POJ 3187 Backward Digit Sums

[bzoj3404] [Usaco2009 Open]Cow Digit Game又见数字游戏

BZOJ 4421 Digit Division

POJ 3187 Backward Digit Sums

POJ 3187 Backward Digit Sums 题解 《挑战程序设计竞赛》