本文主要是介绍2.4 1的数目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
写一个函数f(n),返回1到N之间出现的“1”的个数。
从特殊情况推导到一般情况。
分为该位数是0、1、其他。。
(1)如果这位上的数字是0的话,那么这个位上出现1的次数仅有更高位决定。
(2)如果这位上的数字是1的话,那么这个位上出现的1的次数不仅跟更高位有关,还跟更低位有关。
· (3)如果这位上的数字是其他(2-9)的话,那么这个位上出现1的次数仅由更高位决定。
代码如下:
__int64 Sum1s(__int64 n) {__int64 iCount = 0;__int64 iFactor = 1;__int64 iLowerNum = 0;__int64 iCurrNum = 0;__int64 iHigherNum = 0;while(n / iFactor != 0) {iLowerNum = n - (n / iFactor) * iFactor;iCurrent = (n / iFactor) % 10;iHigherNum = n / (iFactor * 10);switch(iCurrNum) {case 0:iCount += iHigherNum * iFactor;break;case 1:iCount += iHigherNum * iFactor + iLowerNum + 1;break;default:iCount += (iHigherNum + 1) * iFactor;break;}iFactor *= 10;}return iCount;
}
这篇关于2.4 1的数目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!