1049.Counting Ones

【题意】
        给出一个正数n,数出从1~n的所有数字中1的个数

【思路】
        一位位地从低到高数,注意每一位为0、为1的特殊情况的处理即可

#include 
using namespace std;

int main(int argc, char const *argv[])
{
	long long number,tmp,p;
	int cnt;

	cin >> number;
	p = 1;
	tmp = number;
	cnt = 0;
	while(tmp){
		cnt += (tmp/10)*p;
		if(tmp%10>1){
			cnt += p;
		}
		else if(tmp%10==1){
			cnt += (number%p+1);
		}
		tmp /= 10;
		p *= 10;
	}

	cout << cnt;
	
	system("pause");
	return 0;
}


你可能感兴趣的:(PAT(Advanced,Level))