題目
原題鏈接: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;
}