又发现中级水题一枚。。高中貌似老师讲过?
#include <cstdio> #include <cstring> #include <iostream> using namespace std; #define LL long long LL radix[15], n, m; LL cal(LL x) { if (x<0) return 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; } |