主题:这些题对我来说太难了,难不倒的就帮忙啊
chenzhong
[专家分:250] 发布于 2005-08-26 18:58:00
编写程序
1.对于一个多项式,我们可以这样表示:
y=a1x^b1+a2x^b2+a3x^b3+a4x^b4+......anx^bn,可以约定b1,b2,b3......bn从大到小排列,且a1,a2......an均不为0.求任意两个多项式的和.
2.做一个加法器.完成30000以内的加法,两个加数间用"+"连接,可以连加,回车表示式子输入完成;"#"表示结束运算,退出加法器.
3.将1--9这9个数字分成3组(每个数字只能使用一次),分别组成3个3位数,且这3个3位数构成1:2:3的比例,试求出所有的情况.
4.已知数组a中含有n个整形元素,求a中有多少个最大数?多少个次大数?.......多少个互不相等的数?编程实现之.
5.输出集合M的最小的n个数,集合中数据特点如下:
(1)1属于M (2)假设x属于M,则有2x+1属于M,3x+1属于M (3)再无别的数属于M
回复列表 (共6个回复)
沙发
delphi6 [专家分:3450] 发布于 2005-08-26 23:11:00
没错,就是难!
板凳
lzl1403 [专家分:1670] 发布于 2005-08-27 00:35:00
1、如果a、b直接读入,那么就把b相同的a累加,最后输出就可以了
2、字符串操作,结合pos、copy、val、delete逐个数提取出来计算
3、深搜吧,搜9层,每层循环1~9,搜到第9层时验算一下就行了
4、循环一次,记录最大值,次大值,和两个统计变量;当找到一个最大值或次大值时记录一下,当找到一个比最大值还大的数,则最大值赋给次大值,更新最大值和统计变量,当找到一个比次大值大而比最大值小的数则更新次大值信息即可
5、把1加入数组,然后循环数组,把数组的值×2+1、×3+1得出的值加入数组,一直循环到数组第n个元素,然后输出
3 楼
chenzhong [专家分:250] 发布于 2005-08-27 18:48:00
无奈我无师授课,请2楼的朋友再详细说说.最好把源程序写出来.
对了,最近没见口口啊,谁知道他去哪了??
4 楼
lzl1403 [专家分:1670] 发布于 2005-08-27 23:25:00
建议楼主自己慢慢参透,一味问别人拿程序是不好的习惯……
不过确实不会的话我们也会帮你的……
5 楼
mythjoker [专家分:400] 发布于 2005-08-28 18:55:00
第一题:用队列做
第二题:堆栈吧
第三题:呵呵,我有现成的,给你贴了!
program shuzi;
var i,j,k,l:integer;
a:array[1..234,1..3]of integer;
procedure panduan(x:integer);
var n1,n2,n3,n,y:integer;
b:array[1..3,1..9]of byte;
m:char;
s1,s2,s3:string[3];
begin
str(a[x,1],s1);str(a[x,2],s2);str(a[x,3],s3);
for m:='1' to '9' do
begin
val(m,n);
n1:=pos(m,s1);n2:=pos(m,s2);n3:=pos(m,s3);
b[1,n]:=n1;b[2,n]:=n2;b[3,n]:=n3;
end;
for n:=1 to 9 do
if (((b[1,n]=1) or (b[1,n]=2) or (b[1,n]=3)) and
((b[2,n]=1) or (b[2,n]=2) or (b[2,n]=3))) or
(((b[1,n]=1) or (b[1,n]=2) or (b[1,n]=3)) and
((b[3,n]=1) or (b[3,n]=2) or (b[3,n]=3))) or
(((b[3,n]=1) or (b[3,n]=2) or (b[3,n]=3)) and
((b[2,n]=1) or (b[2,n]=2) or (b[2,n]=3))) then
for y:=1 to 3 do a[x,y]:=0;
if (s2[1]=s2[2]) or (s2[2]=s2[3]) or (s2[1]=s2[3]) then a[x,1]:=0;
if (s1[1]=s1[2]) or (s1[2]=s1[3]) or (s1[1]=s1[3]) then a[x,1]:=0;
if (s3[1]=s3[2]) or (s3[2]=s3[3]) or (s3[1]=s3[3]) then a[x,1]:=0;
for n:=1 to 3 do
begin
if s1[n]='0' then a[x,1]:=0;
if s2[n]='0' then a[x,1]:=0;
if s3[n]='0' then a[x,1]:=0;
end;
end;
begin
for i:=100 to 333 do
for j:=200 to 666 do
for k:=300 to 999 do
if (k mod i=0) and (j mod i=0) and (k div i=3) and (j div i=2) then
begin
a[i-99,1]:=i;a[i-99,2]:=j;a[i-99,3]:=k;
end;
for l:=1 to 234 do panduan(l);
for l:=1 to 234 do
if a[l,1]<>0 then
begin
write(a[l,1]:5,a[l,2]:5,a[l,3]:5);
writeln;
end;
end.
这是种笨办法!不建议采用!1!!!!
自己学吧,没有老师,自学成才!!!
6 楼
yukangcool [专家分:460] 发布于 2005-08-28 22:46:00
好好学习,天天向上!偶跟你一起学。。。
这不会死作业,你偷懒吧~
我来回复