String 如何在分形数中找到第n个数字

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)

序列看起来像是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)/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位的大纲算法如下:


  • 找出序列的哪一部分,你是在nNope,没有得到你的问题的想法。你在问什么?要调试代码,您没有显示吗?为了让你的工作免费完成,期待一个工作程序的代码符合这个“想法”?对不起,但是你需要展示自己的努力,展示所有需要的信息,并提出一个具体的问题。否则这个问题就不在这里了。欢迎来到StackOverflow。此问题缺少上下文或其他详细信息:请通过提供其他上下文来改进问题,其中最好包括您对问题的想法以及您为解决问题所做的任何尝试,包括代码尝试。这些信息有助于其他人识别您遇到的困难,并帮助他们写出适合您经验水平的答案。您还需要准确地说明您的困难是什么,您对代码的期望是什么,您得到了什么,以及任何错误消息。
     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 )