五位好朋友相聚.第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 10:05:56
五位好朋友相聚.第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻
五位好朋友相聚.第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻
了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻了一倍;第
三、第四、第五位好友都照此办理.经过这样的赠送之后,每人的糖块恰好都为32 块.问各位好友原先
的糖块数分别是多少?
再加一题:假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),按每公斤1.5元计算邮费,如果超过
1公斤时,其超出部分每公斤加收0.8元。请编程序计算邮件收费。
五位好朋友相聚.第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻
program fanfan(input,output);
const n=5;
var a:array[1..n] of integer;
b:array[1..n] of boolean;
i,j,s:integer;
begin
for i:=1 to n do
begin
a[i]:=32;
b[i]:=true;
end;
for i:=n downto 1 do
begin
b[i]:=false;
for j:=1 to n do
if b[j] then begin a[j]:=a[j] div 2; s:=s+a[j];end;
a[i]:=a[i]+s; s:=0;
b[i]:=true;
end;
for i:=1 to n do
write(a[i],' ');
end.
答案是81 41 21 11 6
我用手酸了一遍,是正确的;
你可以对N跟该,对5,6,7,8同样可以算出解
program aaaa;
var i,i1,n:integer;
a:array[1..5] of integer;
begin
for i:=1 to 5 do
a[i]:=32;
for i:=1 to 5 do
begin
for i1:=1 to 5 do
if i1<>i then begin n...
全部展开
program aaaa;
var i,i1,n:integer;
a:array[1..5] of integer;
begin
for i:=1 to 5 do
a[i]:=32;
for i:=1 to 5 do
begin
for i1:=1 to 5 do
if i1<>i then begin n:=n+(a[i1] div 2);
a[i1]:=a[i1] div 2; end;
a[i]:=a[i]+n;
n:=0;
end;
for i:=5 downto 1 do
write('"',6-i,'"',a[i]:4,' ');
writeln;
end.
讲用for循环建立第推公式,逐步向回推算。最终得到答案。
81,41,21,11,6
补充:我的程序只有315字节,楼上的有790字节,我的空间代价小,运算时间是楼上的三分之一。所以从运行成本来看……(不用说了)
收起