关闭

求1的个数的算法题

247人阅读 评论(0) 收藏 举报

定义一个函数f(n),n是一个正整数,要求0-n之间所有整数中出现数字“1”的个数的和与n相等,例如f(13)=6 。已知f(1)=1,求下一个n的值是多少。

举例:13以内数字1、10、11、12、13包含数字“1”,且其个数为6 

/***************************************************************************/
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int static count=0;
 long int i;
 char buffer[20];
 for(i = 2; ;i++)
 {
  //C++模板函数,用于把一个整形数转换为字符串类型;
  _itoa( i, buffer, 10 );
  for(int j = 0;j < 20;j++)
  {
   if(buffer[j] == '1')
    count++;
  }
  if(i == count + 1)//注意得加上1;因为i从2开始的
  {
   printf("%d有%d个'1'",i,(count + 1));
   printf("/n");
   break;
  }
 }
 printf("None");
}
/*****************************************************************/

希望大家给点评,若有好的算法,请指教。谢谢。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6125次
    • 积分:129
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论