我正在寻找一种函数的算法,该算法可以返回两个序列的连接点,例如:
seq1=471 seq2=480
然而,
seq1=seq1+(4+7+1) =483
seq1=seq1+(4+8+3) =498
....and so on.
对于seq2,我们做同样的事情
seq2=seq2+(4+8+0) =492
....and so on.
我们一直执行到找到连接点为止,在我们的示例中,连接点为519,因此该函数的主要目标是返回519。该函数具有2个参数(seq1,seq2)并返回整数。
这里您有:
int getDigitsSum(int x)
{
int sum = 0;
while (x != 0)
{
sum += x % 10;
x /= 10;
}
return sum;
}
int findJoinPoint(int seq1, int seq2)
{
while (seq1 != seq2)
{
if (seq1 < seq2)
{
if (seq1 == 0)
return -1; // no chance to join, seq1 is 0
seq1 += getDigitsSum(seq1);
}
else if (seq2 < seq1)
{
if (seq2 == 0)
return -2; // no chance to join, seq2 is 0
seq2 += getDigitsSum(seq2);
}
}
return seq1;
}
这对于两个序列的任何值(包括0和负数)都适用。对于两个序列都等于0的函数,该函数返回0-这在逻辑上似乎是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句