标签:
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
标签:
原文地址:http://blog.csdn.net/u014800748/article/details/46681023