1

在一次采访中,我被要求在 PI 的扩展中找到前 9 位回文。我不知道我应该如何去做。在整个面试过程中,这个问题一直存在于我的系统中,我无法正确回答接下来的问题。

什么是最佳方式?

编辑:

找到回文并不难,但我怎样才能尽可能多地扩展 PI。我试过 Math.PI,我试过 22/7,但没有什么能满足我的需求。

4

3 回答 3

2

这里的“最佳”方式很大程度上取决于计算 Pi 的算法的选择,假设您无法访问现成的任意数量的数字。

有许多与 pi 收敛的无限和,每个总和最终都能够产生正确的数字,但是您必须使用一些允许无限精确浮点数或无限大整数的库。

之后,找到回文相对容易,因为您只需比较第一个数字和第九个数字,第二个数字和第八个数字,依此类推。

在这种情况下,问题显然在于使用哪个收敛和来近似 Pi。其中一些在 Pi 的维基百科页面上列出:http ://en.wikipedia.org/wiki/Pi#Polygon_approximation_era

于 2012-09-01T06:36:54.617 回答
1

首先,我会在 pi 中创建一个数字子集并转换为字符串。

我会从中获取一个九字符子集字符串,然后将第一个字符与最后一个字符进行比较。如果它们匹配,则将字符 2 与 8 进行比较,依此类推。如果任何比较失败,则将 9 个字符的字符串移至下一组 - 一个字符。

于 2012-09-01T06:34:49.600 回答
0

我可能会将first index值分配给first variableninth indexsecond variable,然后查看它们是否相等。如果它们相等,我将分配second indexvaluefirst variableeight indexvalue tosecond variable直到他们在中间位置相遇。如果它们在某个地方彼此不同,请分配与第二个变量值不同的值,first variable然后latest left side index重复过程直到到达位置。right side indexleft side index + 8last index - 8

于 2012-09-01T06:56:12.457 回答