首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

将任意一个数分成4份,每份被8整除,c语言实现一下。该如何解决

2012-02-15 
将任意一个数分成4份,每份被8整除,c语言实现一下。如题,这个数可能不能被4整除,但分的每份都能被8整除。请各

将任意一个数分成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 就好了阿

热点排行