CodeFoeces-552B

题目

原题链接: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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容