C++实现页码数字统计

#include<iostream>
#include<iomanip>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<map>
#include<algorithm>
#include<string>
#include<sstream>

using namespace std;

int Str2Int(const string & s, int st, int ed)
{
	int n = 0;
	for (int i = st; i < ed; ++i) {
		n = n * 10 + s[i]- '0';
	}
	return n;
}

int pos_power(int base, int ind) {
	int res = 1;
	for (int i = 0; i < ind; ++i)
		res *= base;
	return res;
}

int Count2(int n) {
	int cnt = 0;
	int ord = 0;

	for (ord = 0; n / pos_power(10, ord) > 0; ++ord) {
		int bit = n / pos_power(10, ord) % 10;

		cnt += bit*ord* pos_power(10, ord-1);

		if (bit > 2)
			cnt += pos_power(10, ord);
		else if (bit == 2)
			cnt += n % pos_power(10, ord) + 1;
	}

	return cnt;
}

int main(void) {
	int L, R;
	while (cin >> L >> R) {
		//cout << Count2(R) << endl;
		//cout << Count2(R) << " " << Count2(L - 1) << endl;
		cout << (Count2(R) - Count2(L - 1)) << endl;
	}
	return 0;
}
參考链接: <a target=_blank href="http://www.cppblog.com/AllKillMan/archive/2011/08/18/153798.html">http://www.cppblog.com/AllKillMan/archive/2011/08/18/153798.html</a>


原文地址:https://www.cnblogs.com/mfmdaoyou/p/7078924.html