28.整数中1出现的次数(从1到n整数中1出现的次数)

整数中1出现的次数(从1到n整数中1出现的次数)
  • 参与人数:2715时间限制:1秒空间限制:32768K
  •  算法知识视频讲解

题目描述

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
最笨的方法做。。
// 28.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

class Solution {
public:
	int NumberOf1Between1AndN_Solution(int n)
	{
		int count = 0;

		if (n > 0 && n < 10) return 1;
		//if (n == 10) return 2;

		for (int i = 1; i <= n; i++) {
			count += numberOfN(i);
		}
		return count;
	}

	int numberOfN(int n) {
		int count = 0;
		while (n) {
			if (n % 10 == 1)
				count++;
			n /= 10;
		}
		return count;
	}
};
int _tmain(int argc, _TCHAR* argv[])
{
	Solution s;
	int result = s.NumberOf1Between1AndN_Solution(10);
	
	return 0;
}


你可能感兴趣的:(28.整数中1出现的次数(从1到n整数中1出现的次数))