超级多的Pascal问题,全部做出者+20分!

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:14:25
1.问题描述:有n枚硬币,其中有一枚假币比真币轻,编程算出最坏情况下至少用多少次可以称出那枚假币。
2.把n元钞票换成一分、二分、五分硬币(每种至少一枚),编程算出有几种换法?
3.现有1克、2克、4克、8克、16克、32克、64克的砝码各一个,用键盘输入重为w(1<=w<=127)克的物体,编程称出该物体需用哪几个砝码?
砝码问题
有四种重量不同的砝码(重量分别为A,B,C,D,且A<B<C<D),每种砝码有三个,要求称出重量为A~M的重量为连续的X种货物,每次最多只能用三个砝码,问:M是几?
例如:输入砝码重量为1,4,5,9
输出为:15
(因为1,4,5,9可以组成的数为:
1,1+1,1+1+1,4,5,1+5,1+1+5,4+4,9,1+9,1+1+9,4+4+4,4+9,5+9,5+5+5.虽然最大能称出27,但因为16这个数就不能称了,所以连续重量的最大数为15
4.将1~9这九个数字,如下图排成一个环,请在某两个数字之间剪开,分别按顺时针和逆时针次序排列成两个九位数,要求剪开后所得到的两个九位数的差最小,共有几组剪法并输出?
1
9 2
8 3
7 4
6 5
5.从键盘输入四个互不相同的自然数,编程求出它们的最小公倍数和最大公约数。
全部做出有加分哦~~快啊~~
快啊,已经提高到60分了~~

2.
program change_money;
var
i,j,k,t:longint;
begin
readln(n);
t:=0;
for i:=1 to n*10 do
for j:=1 to n*5 do
for k:=1 to n*2 do if i+j*2+k*5=n*10 then begin
t:=t+1;writeln(i,' ',j,' ',k);end;
writeln(t);
end.

3.program weight;
var
w,i1,i2,i3,i4,i5,i6,i7:longint;

begin
readln(w);
for i1:=1 to w do
for i2:=1 to trunc(w/2) do
for i3:=1 to trunc(w/4) do
for i4:=1 to trunc(w/8) do
for i5:=1 to trunc(w/16) do
for i6:=1 to trunc(w/32) do
for i7:=1 to trunc(w/64) do
if i1+i2*2+i3*4+i4*8+i5*16+i6*32+i7*64=w then
writeln('1:',i1,' 2:',i2,' 4:',i3,' 8:',i4,' 16:',i5,' 32:',i6,' 64:',i7);
end.

1.
var n,l:longint;
begin
readln(n);
l:=0;
while n >1 do
begin
n:=n div 3;
inc(l);
end;
writeln(l);
end.