作者 黄龙军
单位 绍兴文理学院
给你一个数年份n,把1到n的每个年份都写出来连在一起,最后得到的是几位数?例如n=10,得到的数字是12345678910,因此是11位数。
输入格式:
首先输入一个整数T(1<=T<=10),表示测试组数。
每组测试输入一个整数n(1<=n<=10000)。
输出格式:
对于每组测试,在一行上输出把1到n的每个年份都写出来连在一起,最后得到的数据的位数。
输入样例:
2
10
1
输出样例:
11
1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main(void){
int T; //定义整型变量T,表示测试组数
scanf("%d", &T);
while((T--) != 0){//循环结束标志
int year; //定义年份
int i = 0, j = 0;
int count = 0; //定义位数,初始值为0,即每组测试时,位数为0
scanf("%d", &year);
if(year >= 1 && year <= 10000){//年份满足条件执行下面语句
for(i = year; i > 0; i--){//控制循环次数
for(j = i; j > 0; j /= 10){//年份大于10有两位,大于100有三位以此类推,即控制位数
count++; //记录位数
}
}
printf("%d\n", count); //输出位数
}
}
}