在我的比赛中达到 3000 大约需要一分钟,但我需要知道系列中的第 100 万个数字。该定义是递归的,因此除了计算第 100 万个数字之前的所有内容外,我看不到任何快捷方式。您如何快速计算系列中的第 10 万个数字?
系列定义
n_{i+1} = \floor{ 3/2 * n_{i} }
和n_{0}=2
。
有趣的是,只有一个网站根据谷歌列出了该系列:this one。
Bash 代码太慢
#!/bin/bash
function series
{
n=$( echo "3/2*$n" | bc -l | tr '\n' ' ' | sed -e 's@\\@@g' -e 's@ @@g' );
# bc gives \ at very large numbers, sed-tr for it
n=$( echo $n/1 | bc ) #DUMMY FLOOR func
}
n=2
nth=1
while [ true ]; #$nth -lt 500 ];
do
series $n # n gets new value in the function through global value
echo $nth $n
nth=$( echo $nth + 1 | bc ) #n++
done