B. Vanya and Books( Codeforces Round #308 (Div. 2) 简单题)
2015-08-18 09:16
405 查看
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.
Sample test(s)
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.
题意:为1-n之中有多少个数字,例如10有两个数字,100有三个数字。
点击打开链接
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.
Sample test(s)
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.
题意:为1-n之中有多少个数字,例如10有两个数字,100有三个数字。
点击打开链接
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> using namespace std; __int64 sum; __int64 a[] = {0,9,90,900,9000,90000,900000,9000000,90000000,900000000}; __int64 b[] = {0,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000}; __int64 n; int main(){ while(scanf("%I64d",&n)!=EOF){ sum = 0; for(int i=1;i<=10;i++){ if(n>=b[i]){ sum += a[i]*i; }else{ sum += (n - b[i-1] + 1)*i; break; } } if(n<10) { sum--; } printf("%I64d\n",sum); } }
相关文章推荐
- 阿里云服务器9折优惠券分享
- AltiumDesigner97——封装_L_M_N的区别
- linux文件系统十问
- 德州扑克胜率计算
- HDOJ 1242 Rescue【BFS】
- 一个简单的时间获取客户端程序
- [noip2013]货车运输(kruskal + 树上倍增)
- [Leetcode] Linked List Cycle II
- 面向对象和面向过程
- 串口之COMMTIMEOUTS结构体详解
- hdu2454 Degree Sequence of Graph G(havel定理)
- HDU 4513 吉哥系列故事——完美队形II(Manacher算法最大回文长度 && 两侧沿中点递减)
- browsers shortcut
- 算法竞赛入门经典:第七章 暴力求解法 7.5枚举排列
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
- 串口之COMMTIMEOUTS结构体详解
- [转]Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
- SPOJ:REPEATS - Repeats
- 黑马程序员_面向对象(1)
- 归并排序