1的数目 --智慧碰撞”专栏之七

/************************
*Date:2008-11-19
*Writen BY:Jacky_Dai
************************/
//
// 1的数目
// “智慧碰撞”专栏之七
// 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。
// 例如:
// N= 2,写下1,2。这样只出现了1个“1”。
// N= 12,我们会写下1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12。这样,1的个数是5。
//

//TODO:Add you needed head file
#include <stdio.h>
#include <iostream>

using namespace std;

//////////////////////////////////////////////////////////////////////////
long CmpareNumber(long lNumber);//某个数含有1的数量
long CountOneNumber(long lRange);//N个数中含有1的数量
//////////////////////////////////////////////////////////////////////////
void main()
{
for (long i = 1; i < 9999; i++)
{
printf("%ld", CmpareNumber(i));

if (i%10 ==0)
{
printf(" ");
}
if (i%50 ==0)
{
printf("\n");
}
}
printf("%ld:%ld\n", 321, CountOneNumber(321));
}

long CmpareNumber(long lNumber)
{
long lCount = 0;
while (lNumber != 0)
{
if ((lNumber%10) == 1)
{
lCount++;
}
lNumber/=10;
}
return lCount;
}

long CountOneNumber(long lRange)
{
long lCount = 0;

for (long i = 0; i < lRange; i++)
{
lCount += CmpareNumber(lRange);
}

return lCount;
}

你可能感兴趣的:(智慧)