2013年5月29日

求小于等于N的所有正整数里面包含的1的个数

摘要: 题目:已知一个正整数N,求比N小(包括N)的所有正整数中包含的1的个数。例如N = 12,则包含5个1,分别为1、10、11、12解答:最直观最简单的想法是,从1到N对每一个数检查,得出每个数中包含的一的个数,事件复杂度大概是O(N)1时间复杂度比较高,不是最优算法。一个比1快的算法是:对N的每一位进行检查,得出比N小的正数某一位包含的1的个数总和。比如1234,千位包含234 + 1个1(1000 ~ 1234),百位包含 2 * 100个1(1100 ~ 1199, 100 ~ 199),十位包含13 * 10个1(1210 ~ 1219,1110 ~ 1119,。。。。。。,10 ~ 1 阅读全文

posted @ 2013-05-29 23:35 _Clarence 阅读(452) 评论(0) 推荐(0) 编辑

导航