题目
原题链接:B. Vanya and Books
题意
问1-n有多少位数字。
开起来很简单。参考其他作者答案,但感觉看不懂,最后和朋友讨论了下,最终方法如下。0位的有0个,1位的有9个,2位的有90个,以此类推,用这个一次一次减n,最终到n为0就得到了最终答案。中途少加了*1LL导致WA了一次。
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,t=0;
scanf("%d",&n);
long long num[11]={0,9,90,900,9000,90000,900000,9000000,90000000,900000000,9000000000};
long long sum=0;
while(n){
if(n>=num[t]){
sum+=num[t]*1LL*t;
n-=num[t];
// printf("n>=t %d %d\n",n,t);
}else{
sum+=n*1LL*t;
n=0;
// printf("n<t %d %d\n",n,t);
}
t++;
}
printf("%lld\n",sum);
return 0;
}