Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算段[1,10**n](n<;100)上有多少回文数字_Javascript_Algorithm_Palindrome - Fatal编程技术网

Javascript 计算段[1,10**n](n<;100)上有多少回文数字

Javascript 计算段[1,10**n](n<;100)上有多少回文数字,javascript,algorithm,palindrome,Javascript,Algorithm,Palindrome,有必要计算[1,10**n]段上有多少回文数字(n我不是100%确定,所以如果我错了,请纠正我。它有效,请检查底部的代码 回文应该有两种:奇数回文和偶数回文。你可以通过在第一个回文后面加上相同的数字并在其前面加上前缀,从一个回文转到另一个(相同类型的)回文。所以 一位数回文:0,1,2,3,4,5,6,7,8,9 对于每个一位数回文,我们可以构造10个三位数回文: 000、101、202、…、010、111、212、…、898、999 同样,对于每3位回文,我们可以构造10个5位回文 10**n

有必要计算[1,10**n]段上有多少回文数字(n我不是100%确定,所以如果我错了,请纠正我。它有效,请检查底部的代码

回文应该有两种:奇数回文和偶数回文。你可以通过在第一个回文后面加上相同的数字并在其前面加上前缀,从一个回文转到另一个(相同类型的)回文。所以

一位数回文:0,1,2,3,4,5,6,7,8,9

对于每个一位数回文,我们可以构造10个三位数回文:

000、101、202、…、010、111、212、…、898、999

同样,对于每3位回文,我们可以构造10个5位回文

10**n
将有多达n位的回文。让我们计算一下:

10**1个位数,10**2个3位数,10**3个5位数,…,10**((n+1)/2)个n位数

对于双位数回文(00、11、22、33、44、55、66、77、88、99),也可以这样做,以迭代方式获得偶数位数的回文

然后我们需要删除“非法”数字-以数字0开头的数字


它起作用了,耶

//在不创建数字的情况下计数
函数getSmartCount(n){
让smartPalindromeCount=0;
让零计数启动=0;

对于(让digits=1;digits让我们先从一个较小的问题开始。存在多少个
n
位回文数

如果
n
为偶数,则让数字的形式为
\uuuuuuuuuuuuuu(中点)\uuuuuuuuuuuuuuu
。现在,在第一个数字中,您不能填充0,因此您有9个选项(1-9)。对于
n/2
th位的第二个数字,您可以在0-9中填充任何数字。由于我们处理的是回文,数字的后半部分将与前半部分具有相同的数字。因此,使用基本计数,当
n
为偶数时,
n
位回文的总数为
9*[10*10*…10(n/2)-1倍]=9*10^((n/2)-1)

n
为奇数时,分析将类似,但有两个不同之处:

  • 中点有10个选项(0-9)
  • 中点两侧有
    (n-1)/2个
    数字,其中第一个数字不能为0
  • 同样,使用基本计数,如果
    n
    为奇数=
    9(对于第一个数字)*10(对于中点)*10^((n/2)-2)(剩余数字)=9*(10^(n/2)-1)
    ,与偶数情况类似


    因此,
    n
    数字回文数=
    9*(10^(n/2)-1)
    如果
    n
    大于1,则只需将
    n
    从2循环到100,即可得到所需回文数的总数。

    尝试找到与
    n
    值相关的递归关系有多少回文长度
    2k
    ?有多少回文长度
    2k+1
    ?回答这些问题,问题就变得简单了。