瑞星卡卡安全论坛技术交流区系统软件 一个有趣的编程题,看你会不会?

1   1  /  1  页   跳转

一个有趣的编程题,看你会不会?

一个有趣的编程题,看你会不会?

一个有趣的编程题,看你会不会?

一个有趣的编程题,看你会不会?
编写一个通用程序完成以下任务: 
对于输入的任意正整数A,找出两组正整数n1,n2,...,ns和d1<d2<...<ds,使得A=n1*(d1)^2+n2*(d2)^2+...+ns*(ds)^2,如63=9*1+6*(3)^2.所得到的两组正整数还需满足下列条件:
1.d1必须为1, 即d1=1永远成立,n1必须整除A.
2.如果A为偶数,则d2必须为2,如果A为奇数,则d1,d2,..,ds中肯定没有2.
3.如果A为奇数,并且d1,d2,..,ds中有一个为3,则3必须整除A.
4.如果nx=1(x=2,3,...,s),则n1必须整除(dx)^2.
5.输出所有满足条件的正整数n1,n2,...,ns和d1<d2<...<ds.
给出你的算法或源程序.

注: ^2表示某个数的平方

是不是很有挑战性?这是我们老师布置的一道课后编程题,我搞了好多天才完成,现拿出来和大家共享.
最后编辑2005-09-04 00:51:53
分享到:
gototop
 

A总是可以找出两组数.譬如n1=A,d1=1,则A=n1*1^2
gototop
 

什么叫广度搜,请赐教!
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT