题解 | #[NOIP2013]记数问题#

[NOIP2013]记数问题

http://www.nowcoder.com/practice/28b2d9f2bf2c48de94a1297ed90e1732

#include <stdio.h>
#include <math.h>

//查找数字的个数
int SchNum(int num, int F) {
    int sum = 0;
    int rem = 0;
    int count = 0;
    int nums = num;
    if (num < 10 && F == 0) {
        return 0;
    }
    while (num) {
        rem = num % 10;
        if (F == 0 && rem != 0) {
            int tmp = 1;
            for (int i = 0; i < count - 1; i++) {
                tmp = tmp * 10 + 1;
            }
            sum += rem * pow(10, count - 1) * count - tmp;
        } else if (rem < F) {
            sum += rem * pow(10, count - 1) * count;
        } else if (rem == F) {
            sum += rem * pow(10, count - 1) * count + nums % (int) pow(10, count) + 1;
        } else if (rem > F) {
            sum += pow(10, count) * (count + 1) - (10 - rem) * pow(10, count - 1) * count;
        }

        // 1 - 1 + 1
        // 20 - 11 + 2
        // 300 - 111 + 3
        // 4000 - 1111 + 4

        // 0 + 1
        // 9 + 2
        // 189 + 3
        // 2889 + 4
        // 38889 + 5

        num /= 10;
        count++;
    }

    return sum;
}

int main()
{
    int F = 0;
    int num = 0;
    scanf("%d%d", &num, &F);
    int n = SchNum(num, F);
    printf("%d", n);
    return 0;
}

全部评论

相关推荐

09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
10-15 15:00
潍坊学院 golang
跨考小白:这又不是官方
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务