问题描述:
1.写一个函数f(N),返回1到N之间出现的“1”的个数,比如f(12)=5。2.在32位整数范围内,满足条件“f(N)=N”的最大的N是多少?
问题一解法:
最简单的方法,遍历1到N,将其中每一个数含有1的加起来;
LONGLONG Count(ULONGLONG n)
{
ULONGLONG iNum=0;
while(n!=0)
{
iNum+=(n%10==1)?1:0;
n/=10;
}
return iNUm;
}
LONGLONG f(ULONGLONG n)
{
ULONGLONG iCount=0;
for(ULONGLONG I=1;i<=n;i++)
{
iCOunt+=Count(i);[
}
return iCount;
}
方法简单,但是效率......
阅读全文