c语言统计位数,简单运用

给你一个数年份n,把1到n的每个年份都写出来连在一起,最后得到的是几位数?例如n=10,得到的数字是12345678910,因此是11位数。

输入格式:
首先输入一个整数T(1<=T<=10),表示测试组数。 每组测试输入一个整数n(1<=n<=10000)。

输出格式:
对于每组测试,在一行上输出把1到n的每个年份都写出来连在一起,最后得到的数据的位数。

输入样例:
2
10
1
输出样例:
11
1

#include <stdio.h>

int count(int n)
{
    int m = 0;
    int x = n;
    while (x)
    {
        m++;
        x /= 10;
    }
    int s = 0;
    int b = 1;
    for (int i = 1; i < m; i++)
    {
        s += i * b * 9;
        b *= 10;
    }
    s += m * (n - b + 1);
    return s;
}

int main()
{
    int T, n;
    scanf("%d", &T);
    for (int i = 0; i < T; i++)
    {
        scanf("%d", &n);
        printf("%d\n", count(n));
    }
    return 0;
}