作业帮 > 综合 > 作业

Pascal语言编程告诉进

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/20 15:16:31
Pascal语言编程告诉进
问题描述
给出N个整数X1、X2、X3,…,Xn,将这N个数从小到大排序为A1,A2,A3,…,An,记数列A1,A2,A3,…,An的基数项之和为P,偶数项之和为Q,令T=|P-Q|,求出T的值.
输入格式(输入文件名 simple.in)
输入文件的第1行为整数N(1≤N≤50000).
接下来的N行每行有一个整数,按顺序给出X1,X2,X3,…,Xn的值(|Xi|≤1000)
输出格式(输出文件名 simple.out)
给出整数T的值.
输入(simple.in) 输出(simple. out)
3
1
3
2 2
分析
数的数目不多(n=50000),可用快排.
求和最大值1000×50000=50000000,没超过32位最大值,可直接求和.
先排序,后分别求基数项和偶数项之和,求差即可.
麻烦高手帮帮忙~~
不知是你题有问题还是…………貌似不用排序啊…………
程序如下:
var
n,i,a:longint;{这里integer上限是33767,显然不能符合50000,因此用longint}
T,P,Q:longint;{此处同样}
begin
assign(input,'simple.in');
assign(output,'simple.out');
reset(input);
rewrite(output);{都是文件…………}
readln(n);
for i:=1 to n do
begin
read(a);
if odd(a)=true then {odd(a),奇数就返回true,else 返回false}
p:=p+a
else q:=q+a;
end;
T:=abs(P-Q); {abs(a)是绝对值函数,可以直接用,不需要调Math库}
writeln(T);
end.
close(input);
close(output);{文件,应该知道吧……}
这个应该是没错的………………
再问: else q:=q+a; 这儿 发生语法错误额~~