PAT:A1049 Counting Ones (30 分)

PAT:A1049 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​​).

Output Specification:

For each test case, print the number of 1's in one line.

Sample Input:

12

Sample Output:

5

 

代码:

#include
#include
using namespace std;
typedef long long ll;

int main() {
	int n, left = 0, right = 0, now, a = 1;
	int ans = 0;
	cin >> n;
	while(n/a != 0) {
		now = n / a % 10;
		left = n / (a * 10);
		right = n % a;
		if(now == 0) ans += left * a;
		else if(now == 1) ans += left*a + right + 1;
		else if(now >= 2) ans += (left + 1) * a;
		a *= 10;
	}
	cout << ans << endl;
	return 0;
} 

 

 

你可能感兴趣的:(PAT:A1049 Counting Ones (30 分))