用PASCAL怎么编 若干个连续整数之和是2003,试写出这些整数
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/23 08:36:54
用PASCAL怎么编 若干个连续整数之和是2003,试写出这些整数
用PASCAL怎么编 若干个连续整数之和是2003,试写出这些整数
用PASCAL怎么编 若干个连续整数之和是2003,试写出这些整数
var i,j,k,s:integer;
begin
for i:=1 to 1004 do
begin
s:=0;
j:=i;
repeat
s:=s+j;
j:=j+1;
until s>=2003;
if s=2003 then
begin
for k:=i to j do
write(k,' ');
writeln;
end;
end;
end.
数学方法 其中q为数列最中间的数
program aa;
var a:array[1..2003]of integer;
n,q,i:integer;
begin
readln(n);
if n and 1 =1 //判断n是否是奇数
then begin //奇数
q:=n shr 1+1;//shr 1与div...
全部展开
数学方法 其中q为数列最中间的数
program aa;
var a:array[1..2003]of integer;
n,q,i:integer;
begin
readln(n);
if n and 1 =1 //判断n是否是奇数
then begin //奇数
q:=n shr 1+1;//shr 1与div 2相同
a[q]:=2003 div n;
for i:=1 to q-1 do a[i]:=a[q]-q+i;
for i:=q+1 to n do a[i]:=a[q]+i-q;
end
else begin //偶数
q:=trunc(2003/n -0.5);
for i:=1 to q-1 do a[i]:=a[q]-q+i;
for i:=q+1 to n do a[i]:=a[q]+i-q;
end;
write(a[1]);
for i:=2 to n do
write(' ',a[i]);
writeln;
end.
收起
枚举整数个数l(1<=l<2003)和第一个数i,利用等差数列求和公式判断即可。
program dd;
var t,k,i,j:longint;
begin
for i:=1 to 1002 do
begin
j:=i;
k:=i+1;
repeat
j:=j+k;
k:=k+1;
until j>=2003;...
全部展开
program dd;
var t,k,i,j:longint;
begin
for i:=1 to 1002 do
begin
j:=i;
k:=i+1;
repeat
j:=j+k;
k:=k+1;
until j>=2003;
if j=2003 then
begin
for t:=i to k-1 do
write(t,' ');
writeln;
end;
end;
end.
基本思想是搜索,枚举起始点,往后面加,直到和大于或等于2003
算出来只有一个结果
1001,1002
收起