您的位置:首页 > 其它

寻找数列中的1

2015-06-07 14:08 267 查看
一、题目与要求

给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

要求:写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数。例如 f(12) = 5。

    在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。

二、设计思路

先计算2位数和3位数的1的个数的情况,然后递归出1的个数的算法,进行编程。

三、实验代码

#include<iostream.h>
int main()
{
int num;
int tag=1;
int count=0;
int heigher,cur,lower;
cout<<"请输入数据:";
cin>>num;
while(num/tag!=0)
{
heigher=num/(tag*10);
cur=(num/tag)%10;
lower=num%tag;
switch(cur)
{
case 0:
count=count+heigher*tag;
break;
case 1:
count=count+heigher*tag+lower+1;
break;
default:
count=count+(heigher+1)*tag;
break;
}
tag=tag*10;
}
cout<<"1出现的个数为:"<<count<<endl;
return 0;
}


四、实验截图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: