String 如何在分形数中找到第n个数字
序列看起来像是112123412345。。。String 如何在分形数中找到第n个数字,string,math,numbers,sequence,String,Math,Numbers,Sequence,序列看起来像是112123412345。。。 如果输入为55,则应返回1,而不是10。如果输入是56,它应该返回0,而不是1。你知道了。所以我们有一个由 1 1 digit 1 digit total 12 2 digits 3 digits total 123 3 digits 3*(3+1)/2 = 6 digits total 1234 4 digits 4*(4+1)
如果输入为55,则应返回1,而不是10。如果输入是56,它应该返回0,而不是1。你知道了。所以我们有一个由
1 1 digit 1 digit total
12 2 digits 3 digits total
123 3 digits 3*(3+1)/2 = 6 digits total
1234 4 digits 4*(4+1)/2 = 10 digits total
...
123..89 9 digits 9*(9+1)/2 = 45 digits total
123..8910 11 digits 10*(10+1)/2 + 1 = 56
123..891011 13 digits 11*(10+1)/2 + 3 = 69
123..89101112 15 digits 12*(12+1)/2 + 3*(3+1)/2 = 84 digits
这是,也请参见相关序列
总位数的公式如下所示
f(n) = n*(n+1)/2 + {(n-9)*(n-8)/2 : if n>=10} + {(n-99)*(n-98)/2 : if n>=100) + ...
n*(n+1)/2 + (n-9)*(n-8)/2
= 1/2( n^2 + n + n^2 - 17 n + 72)
= n^2 - 8 n + 36
一些关键点f(9)=45,f(99)=99*100/2+90*91/2=9045,f(999)=1395495
查找第k位的大纲算法如下:
n = ceil( ( 8 + sqrt(64 - 4 (36 - k)))/2)
digit(l) := l <= 9 ? l : (l%2==0 ? floor((l+10)/20) : ((l-11)/2)%10 )