首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

請大家幫忙給出一個算法解决方案

2012-03-05 
請大家幫忙給出一個算法請大家幫忙給出一個算法下面是問題.....有一組數據1,2,4,8,16.........它的數據規

請大家幫忙給出一個算法
請大家幫忙給出一個算法
下面是問題.....
有一組數據   1,2,4,8,16.........它的數據規則是後一個數字是前一個數字的2倍

現在我知道一個   數字   並且知道這個   數字   是由幾個數字組成的

請大家幫忙有沒有一個算法可以找出這個數字是由那幾個數字組成的.

例如       我知道數字28       我知道是由   3個數字組成
那我怎麼算出     是那幾個數字組成了28呢?

提示:這個數字一定是來自這一組數據其中幾個數字的和.

[解决办法]
好像,由幾個數字相加是定的
declare @a int,@m int,@r int
select @a=28,@m=0,@r=1

while @a> 1
begin
while @r> 0
begin
if power(2,@m)> @a
set @r=0
else
set @m=@m+1
end

print power(2,@m-1)
set @a=@a-power(2,@m-1)
select @r=1,@m=0
end
if @a> 0
print @a

/*
16
8
4
*/

--可以試@a=900,@a=30,@a=57,@a=23
/* @a=900
512
256
128
4
*/

/*@a=30
16
8
4
2
*/

/*@a=57
32
16
8
1
*/
[解决办法]
因為數列 An=2^n
An> Sn-1 即(An=1+Sn-1)
所以,一個數,等於多少個數相加,應該是定的

热点排行