#308 (div.2) B. Vanya and Books

1.题目描述:点击打开链接

2.解题思路:本题要求统计数位的个数,简单的试验一下发现有如下规律:一个n位数的个数有9*(10^n)个,,因此所有n位数的数位是n*9*(10^n)个,因此可以利用两个循环变量base,k来计算,其中base表示n位数的总个数,k表示每一个n位数的数位有k位,循环条件是n-base>0,这样即可完成统计。

3.代码:

#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<algorithm>#include<string>#include<sstream>#include<set>#include<vector>#include<stack>#include<map>#include<queue>#include<deque>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<functional>using namespace std;typedef long long ll;typedef unsigned long long ull;#define me(s) memset(s,0,sizeof(s))#define For(i,n) for(int i=0;i<(n);i++)#define pb push_back#define sz size#define clr clear#define F(a,b) for(int i=a;b;i++)int main(){int n;while(~scanf("%d",&n)){ll cnt=0;ll base=9,k=1;while(n-base>0){n-=base;cnt+=base*k;base*=10;k++;}cnt+=n*k;printf("%I64d\n",cnt);}return 0;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

没有伞的孩子必须努力奔跑!

#308 (div.2) B. Vanya and Books

相关文章:

你感兴趣的文章:

标签云: