将任意一个数分成4份,每份被8整除,c语言实现一下。
如题,这个数可能不能被4整除,但分的每份都能被8整除。请各位提供一下好的方法
[解决办法]
随便分成四部分,那么每个部分模8只有8种情况(0-7).
通过调整,使每个部分模8余0.
换个方式说:
首先任意分四部分.
a1 a2 a3 a4
把ai减去8,加到aj上,这是做无用功的
因此我们只需要在模8的情况下考虑问题.
也就是说首先做bj = ai%8
得到(b1,b2,b3,b4)
这个可以调整到使得全部模8八零吗?
如果bi的问题解决了,那么ai的问题就解决了.
而bi总共有8^4情况,至于怎么搜索解,应该不难.
主要是要注意,每个部分应该是非负的,所以有些操作的可行性值得思考.
[解决办法]
任意一个数能这样搞?
设满足条件的数 是X,
则: X=8*N1 + 8*N2 + 8*N3 + 8*N4;(N1,N2,N3,N4是大于0的自然数);
X显然不是任意一个数。
[解决办法]
这个“分”如果我没理解错的话,
既然这个数(x)能被“分”成 4 份被 8 整除的,设 x = 8*a + 8*b + 8*c + 8*d
x 本身必被 8 整除啊
将 x/8 随便“分”成四份,每份乘回 8 就好了阿