1. 程式人生 > >PAT 1049 Counting Ones (30 分)

PAT 1049 Counting Ones (30 分)

1049 Counting Ones (30 分)

The task is simple: given any positive integer N, you are supposed to count the total number of 1’s in the decimal form of the integers from 1 to N. For example, given N being 12, there are five 1’s in 1, 10, 11, and 12.


Input Specification:
Each input file contains one test case which gives the positive N (≤ 2

30 2^{30} ).


Output Specification:
For each test case, print the number of 1’s in one line.

Sample Input:

12

Sample Output:

5




解析

#include<cstdio>
using namespace std;
int main()
{
	int N, result =
0, left, now, right, product = 1;; scanf("%d", &N); while (N/product != 0) { left = N / (product*10); now = N / product % 10; right = N % product; if (now == 0) result += left*product; else if (now == 1) result += left * product + right+1; else result += (left + 1)*product; product *=
10; } printf("%d", result); }