poj3286

来源:互联网 发布:java面试笔试题 编辑:程序博客网 时间:2024/05/17 22:16

又发现中级水题一枚。。高中貌似老师讲过?

#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

#define LL long long

LL radix[15], n, m;

LL cal(LL x)
{
    if (x<0return 0;
    LL sum = 1;
    for (int i = 1; ; i++)
    {
        if (radix[i]>x) break;
        LL front = x / radix[i];
        LL back = x % radix[i - 1];
        LL now = (x % radix[i] - x % radix[i - 1]) / radix[i - 1];
        if (now == 0) sum += (front - 1) * radix[i - 1] + back + 1;
        else sum += front * radix[i - 1];
}
    return sum;
}

int main()
{
    radix[0] = 1;
    for (int i = 1; i < 15; i++) radix[i] = radix[i - 1] * 10;
    while (cin >> m >> n &&(m != -1 || n != -1))
    {
        cout << cal(n) - cal(m - 1) << endl;
    }
    return 0;
}

原创粉丝点击