看了好久,不知道错在哪里,求解答
这是题目:描述
当FourFire连续写下从十进制整数1开始到某个整数N之间的所有整数时,能得到如下的数字序列:
12345678910111213141516171819202122…
编写一个程序,计算这个序列中的数字个数。
输入
输入的第一行且是唯一的一行包含:一个整数N,1≤N≤100,000,000。
输出
输出的第一行且是唯一的一行应包含:由给定的整数所产生的序列的数字个数。样例输入
样例输入
15
样例输出
21
自己写的:
#include <stdio.h>
#include <math.h>
int f(int b)
{
int sum=0;
int j,i=1,k=10;
while(b>=k)
{
i++; //i计算输入的数的位数
k*=10;
}
k/=10;
for(j=1;j<i;j++)
{
sum+=j*9*(int)pow(10,j-1); //从一位数,到二位数。。。。一直求和,9*1+90*2+900*3.。。。。
}
sum+=(b-k+1)*i; //加上最后一个和,比如156,就是加上(156-100+1)*3的和
return sum;
}
int main()
{
int a;
scanf("%d",&a);
printf("%d\n",f(a));
return 0;
}