CodeForces 552B-Vanya and Books
2016-04-21 20:34
609 查看
B. Vanya and Books
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Vanya got an important task — he should enumerate books in the library and label each book with its number. Each of the n books should
be assigned with a number from 1 to n.
Naturally, distinct books should be assigned distinct numbers.
Vanya wants to know how many digits he will have to write down as he labels the books.
Input
The first line contains integer n (1 ≤ n ≤ 109)
— the number of books in the library.
Output
Print the number of digits needed to number all the books.
Examples
input
output
input
output
Note
Note to the first test. The books get numbers 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, which totals to 17 digits.
Note to the second sample. The books get numbers 1, 2, 3, 4, which totals to 4 digits.
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Vanya got an important task — he should enumerate books in the library and label each book with its number. Each of the n books should
be assigned with a number from 1 to n.
Naturally, distinct books should be assigned distinct numbers.
Vanya wants to know how many digits he will have to write down as he labels the books.
Input
The first line contains integer n (1 ≤ n ≤ 109)
— the number of books in the library.
Output
Print the number of digits needed to number all the books.
Examples
input
13
output
17
input
4
output
4
Note
Note to the first test. The books get numbers 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, which totals to 17 digits.
Note to the second sample. The books get numbers 1, 2, 3, 4, which totals to 4 digits.
#include <cstdio> typedef long long LL; LL a[100]={0, 9, 180, 2700, 36000, 450000, 5400000, 63000000, 720000000, 8100000000, 90000000000}; LL count(LL a, LL b) { if(b==0) return 1; LL sum=1; for(int i=0; i<b; i++) sum*= a; return sum; } int main() { LL n; while(scanf("%lld", &n) != EOF) { LL sum =0; int cnt =0; LL O=n; while(n) { if(n <= 9) break; LL Q=n; if(Q/10 != 0) { sum +=a[++cnt]; n/=10; continue; } } LL dig= cnt+1; sum= sum+(O-count(10, cnt)+1)*dig; printf("%lld\n", sum); } return 0; }
相关文章推荐
- Scala进阶源码实战之七——链式调用、结构类型
- php干不了的活
- c#重写TabControl控件实现关闭按钮的方法
- differences in python 2 and python 3
- 百度地图api为标注设置与删除文字标签
- 你最喜欢做什么--兴趣问题清单
- Dism 错误 14099
- 对Xabber源码解析的过程(2)connection
- 冲刺3
- SQL Server 分组后取Top N
- 自定义排序数组二分法插入实现
- Spark SQL
- linux命令复制指定文件或者指定目录下的全部文件到另一个目录中
- hive inser into 与 hive overwrite区别
- 兴趣问题清单
- 站内邮件的设计思路
- java基础算法之递推
- Java 锁的学习
- 数据结构求一个矩阵的马鞍点
- 使用 P3P 规范让 IE 跨域接受第三方 cookie