星期五, 九月 07, 2007

Goolge-f(n)=n

Consider a function which, for a given whole number n, returns the number of onesrequired when writing out all numbers between 0 and n.
For example, f(13)=6. Notice that f(1)=1. What is the next largest n such that f(n)=n?
phylips 于 Mon Mar 26 21:50:27 2007 提到:

给你往下扩展一下~~~~,发现f(10^n)与10^n之间怪异的增长关系
0~9里面有1
0~99里面有20
0~999里面有300
0~9999里面有4000
0~99999里面有50000
0~999999里面有600000
0~9999999里面有7000000
0~99999999里面有80000000
0~999999999里面有900000000
0~9999999999里面有10000000000,这时f(10^n)=10^n,刚好差不多相等
再往下就出现f(10^n)>10^n的情况,具体关系也可以表示出来
不知是否这样可以从某个值往后
满足f(n)>n,仅是一假设,未作证实......

harry 于 Mon Mar 26 23:14:22 2007 提到:

我给出来个f(n)的计算公式,

int doli(long int n)
{
if(n > 9)
{
long int k1,k2,k3,k4;
long int temp;
k1=int(log10(double(n)));
k2=int(pow(10.0,double(k1)));
k3=int(pow(10.0,double(k1)-1));
k4=n%k2;
if(n/k2 == 1)
{
temp=n/k2*k1*k3+k4+1+doli(k4);
}
if(n/k2 > 1)
{
temp=n/k2*k1*k3+k2+doli(k4);
}
return temp;
}
else
{
if(n == 0)
{
return 0;
}
else
return 1;
}

}
phylips 于 Thu Mar 29 19:38:35 2007 提到:

恩,如果是单纯写个f(n)函数,这个方法就够用了

但是如果要用来求f(n)=n,如果采用单纯的从1到n穷举好像还不如badtang那个更直接,
要利用这个f(n)的方法,就需要改进查找策略,xiaocui给了个思路

f(n)与n的增长率的确是有规律的
对于这个f(n)=n这个函数,始终认为是只有有限个解的
前面有个扩展kingger的关于f(n)与n增长关系的实例

f(10^10)=10^10+1
f(10^20)=2*(10^20)+1
......

f(10^100)=10*(10^100)+1
f(10^101)=10.1*(10^101)+1
观察f(10^100)--f(10^101)之间我们就会发现,不会存在f(n)=n的解了
因为f(10^100)=10*(10^100)+1=10^101+1,已经大于10^101了
同样的道理可以发现f(10^101)--f(10^102)也无解了...
所以从10^100开始已经是必然无解的了
另外我怀疑最大的f(n)=n的n值要远小于10^100,可能位于10^10附近

没有评论: