Algorithm 我对卡普雷卡号码有疑问

Algorithm 我对卡普雷卡号码有疑问,algorithm,Algorithm,嗨,我有一个问题 显示数字的平方是否等于它的n个右数字加n或n-1个左数字的和? 或 解决此问题的算法是什么请帮助可能将原始数字的平方转换为字符串,然后您可以将该字符串的部分转换为整数并添加它们。为分割索引位置存储一个int,并迭代每个索引分割位置进行测试 当然,还有很多其他方法可以做到这一点。这里有一个快速的从右向左扫描测试,使用整数而不是字符串来测试单个数字。但未经测试: int left_digits = n*n; int right_digits = 0; int next_right_

嗨,我有一个问题 显示数字的平方是否等于它的n个右数字加n或n-1个左数字的和? 或


解决此问题的算法是什么请帮助

可能将原始数字的平方转换为字符串,然后您可以将该字符串的部分转换为整数并添加它们。为分割索引位置存储一个int,并迭代每个索引分割位置进行测试


当然,还有很多其他方法可以做到这一点。

这里有一个快速的从右向左扫描测试,使用整数而不是字符串来测试单个数字。但未经测试:

int left_digits = n*n;
int right_digits = 0;
int next_right_digit_multiplier = 1;
while ((left_digits > 0) && (right_digits < n))
{
    if ((left_digits + right_digits) == n)
    {
        return true;
    }

    int next_digit = left_digits % 10;
    left_digits /= 10;
    right_digits += (next_digit * next_right_digit_multiplier);
    next_right_digit_multiplier *= 10;
}
return false;
int左_位=n*n;
int右_位数=0;
int next\u right\u digital\u乘数=1;
而((左数字>0)和&(右数字

请注意,如果您开始使用非常大的数字,那么在这里找到一些理论可能也会更好,例如,只测试中间的少数情况,其中任何一方的位数都不超过n(忽略前导零!)。

正如您反复被告知的那样,这不是一个数学问答网站。下面的布莱恩解决方案与我将给出的相同,但是也许最好在@ OeZi,No.Posits上提出这样的问题。MathExcel是用于研究水平的数学问题。个人而言,我认为算法与计算机主题相比,更像是一个数学题目,我把它看作是逻辑、猜想、定理,证明等。根据标准,软件算法是可接受的。
int left_digits = n*n;
int right_digits = 0;
int next_right_digit_multiplier = 1;
while ((left_digits > 0) && (right_digits < n))
{
    if ((left_digits + right_digits) == n)
    {
        return true;
    }

    int next_digit = left_digits % 10;
    left_digits /= 10;
    right_digits += (next_digit * next_right_digit_multiplier);
    next_right_digit_multiplier *= 10;
}
return false;