题目说明:0~9数字每个数字中有多少个圈,当前数的每一位就有多少个圈。

#include <bits/stdc++.h>
using namespace std;
const int MAX = 15;
int a[MAX] = { 0 };//用来记录每组数0-9出现的次数
int b[10] = { 1,0,0,0,1,0,1,0,2,1 };//写入0-9这10个数字有多少圈,比如0有一个圈。

int main() {
    int n;
    cin >> n;
    int *c = new int[n];//先把每组的结果存入数组c,最后一块输出
    int x = 0;
    pair<int, int> v;
    for (int i = 1; i <= n; i++) {
        cin >> v.first >> v.second;
        int q = v.second - v.first;
        //每个数中有多少0-9的数,并加到a数组里
        for (int j = v.first; j <= v.first + q; j++) {
            int num = j;
            while (num > 0) {
                int t = num % 10;
                a[t]++;
                num = num / 10;
            }
        }
        //计算每组的结果
        long sum = 0;
        for (int i = 0; i <= 9; i++) {
            sum += a[i] * b[i];
        }
        //将结果存入数组C
        c[x++] = sum;
        memset(a, 0, sizeof(a));//将数组a恢复为零
    }
    for (int i = 0; i < n;i++) {
        cout << c[i] << endl;
    }
 
    return 0;
}