x=0;
设存储数组
s[2002];
设临时变量
i,j;
其中i为当前递推数据号
i=0;
while(i<=n)
{
s[i]=pow(k,x);
x++;
for(j=1;j<i;j++)
s[i+j]=s[i]+s[j];
i=i+j;
}
----------------解决方案--------------------------------------------------------
以下是引用leeco在2007-8-12 22:46:00的发言:
就是利用
m-1
∑k^i < k^m
i=0
然后把
3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2
和
1, 2, 3, 4, 5, 6
通过进制转换建立双射关系。
如果将3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2用3进制表示
恰好和1, 2, 3, 4, 5, 6用2进制表示
时候的形式上是一致的。
对于一般的情况,就是将n视作2进制表示的串所对应的k进制表示的数就是要输出的。
就是利用
m-1
∑k^i < k^m
i=0
然后把
3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2
和
1, 2, 3, 4, 5, 6
通过进制转换建立双射关系。
如果将3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2用3进制表示
恰好和1, 2, 3, 4, 5, 6用2进制表示
时候的形式上是一致的。
对于一般的情况,就是将n视作2进制表示的串所对应的k进制表示的数就是要输出的。
谢谢,你的解法我明白了,不过我在楼上写的递推也应该没有问题啊,为什么那样就过不了一些数据?
----------------解决方案--------------------------------------------------------
回复:(卧龙孔明)以下是引用leeco在2007-8-12 22:46...
不知道,我没明白你的方法 ----------------解决方案--------------------------------------------------------
3^0 3^1 3^0+3^1 3^2 3^0+3^2 3^1+3^2 3^0+3^1+3^2
s[1] s[2] =s[1]+s[2] s[4] =s[1]+s[4] =s[2]+s[4] =s[3]+s[4]
哦,看看上面这个应该就明白了
----------------解决方案--------------------------------------------------------
编号 0 1 2 3 4 5 6 7
数列 0 3^0 3^1 3^0+3^1 3^2 3^0+3^2 3^1+3^2 3^0+3^1+3^2
对应 0 0+1 0+2 1+2 0+4 1+4 2+4 3+4
----------------解决方案--------------------------------------------------------
把序列的每一项用数组S[1..2002]存储,S[1]= K^0=1;以后加入k的x(x=1,2,3,…)次方后,依次加入这项与第一项到他前面一项的和组成的项,直到总项数等于N或者超过N一些时停止加入项,输出S[N]即可。
----------------解决方案--------------------------------------------------------
这个好像就是+前面的数么 数也是放在数组里
比如说 15
1 2 3 4
2 4 8 16
1 15^1 16 15^2 225+1 225 +15 225+16 15^3.............. 15^4
不是道2位帅哥能看懂我的意思吗?
[此贴子已经被作者于2007-8-12 23:54:50编辑过]
----------------解决方案--------------------------------------------------------
对了 我看chnlkw 这个人挺猛啊 我想看看他写的那4个程序可以吗? 在那看啊?
[此贴子已经被作者于2007-8-12 23:59:57编辑过]
----------------解决方案--------------------------------------------------------
回复:(卧龙孔明)3^0 3^1 3^0+3^1 3^2 ...
嗯,这算法应该对的,就是慢了点。
----------------解决方案--------------------------------------------------------
以下是引用卧龙孔明在2007-8-12 23:05:24的发言:
3^0 3^1 3^0+3^1 3^2 3^0+3^2 3^1+3^2 3^0+3^1+3^2
s[1] s[2] =s[1]+s[2] s[4] =s[1]+s[4] =s[2]+s[4] =s[3]+s[4]
哦,看看上面这个应该就明白了
。。。没看见 不过 这个算法也是我 看到这个题 第一个想到的算法
----------------解决方案--------------------------------------------------------