2005-11-21 17:18
有这样一个函数,对于任意整数n,都能返回写出0到n之间出现“1”的个数。例如,f(13)=6。请注意f(1)=1,那么下一个能实现f(n)=n的最大数字是什么?
代码:
/*****************************************/
/* Result: */
/* f(199981)=199981 */
/*****************************************/
#include <stdio.h>
#include <conio.h>
void main()
{
int n = 2;
int num = 1;
int num_tmp,one;
bool founded = false;
while(!founded){
one=0;
num_tmp=n;
while(num_tmp > 0){
if(num_tmp % 10 == 1)
one++;
num_tmp = num_tmp / 10;
}
num = num + one;
if(num == n)
break;
else
n++;
}
printf("f(%d)=%d",n,n);
getchar();
}
请小心你的思想,它会影响你的行为,
请小心你的行为,它会影响你的习惯,
请小心你的习惯,它会影响你的性格,
请小心你的性格,它会影响你的命运。
请小心你的行为,它会影响你的习惯,
请小心你的习惯,它会影响你的性格,
请小心你的性格,它会影响你的命运。