数学 MAX

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:13:27
一个正整数,把这个数的最后一位数挪到最前面(例如:312中的2挪到最前面就变成了231),挪动之后的数是挪动之前的数的2倍,求这个数可以是多少?(注意用不同的思路详解,觉得别人的不对或不详细,可以反驳,并说出自己的方法。)

如果是:三倍呢?
四倍呢?
五倍呢?……
n倍呢?
有什么关系?

请各位高手指点一二,不胜感激。
我举的例子只是帮助大家理解题意,我也知道我举的数不可能。

这个数至少是两位以上的,并且可以人为的分为两个部分——个位部分Y和其他部分X,可以用一个等式来表示这条业务规则想表达的意思:
m*(10X+Y) = Y*10(n-1) + X
让我们继续化简这个等式:
10mX + mY = Y*10 (n-1) + X
(10m-1)X = Y*10 (n-1) – mY
(10m-1)X = Y (10 (n-1) -m)

最终我们得到了下面这个等式
X = Y (10 (n-1) -m)/(10m-1)

在上面的等式中,Y表示个位上的数字,X表示其余的部分,n表示这个数的位数,(n-1)为指数,m为倍数即新数是原数的m倍。例如:对于123这个数,Y=3,X=12,n=3。我们可以知道X和Y一定都是正整数,另外,我们还可以知道Y一定是一个0-9之间的数字,所以我们只要求得X的值,就很容易的可以知道我们要找的那个数了。
可以通过编程来找到此方法的解。

换一个思路,以两倍为例。无论一个数多大,乘以2的时候,进位最大为1。所以可以来凑出这个数的。由于将这个数的最后一位数挪到最前面,挪动之后的数是挪动之前的数的2倍,所以高位应该是低位的2倍,如有进位还需要进位。可以将个位从1到9依次试过。
以个位为2为例:则十位为4,百位为8,千位为6进1,万位为2+1=3进1,十万位为7,百万位为4进1,千万位为8+1=9,亿位为8进1,十亿位为6+1=7进1,百亿位4+1=5进1,千亿位为0+1=1进1,万亿位为3,十万亿位为6,百万亿位为2进1,千万亿位为4+1=5,亿亿位为0进1,十亿亿位为1,百亿亿位为2。此时,最高位和个位相同,且没有进位,可以看作完成了一个循环。此数最高位为十亿亿位,此数为105263157894736842。
当倍数改变时,也可以这么做,只是到时要注意进位了。

个位部分Y和其他部分X,可以用一个等式来表示这条业务规则想表达的意思:
m*(10X+Y) = Y*10(n-1) + X
让我们继续化简这个等式:
10mX + mY = Y*10 (n-1) + X
(10m-1)X = Y*10 (n-