Đề thi Toán - Tin học trong nhà trường (Bài 48+49+50)
Chia sẻ bởi Thân Thị Thanh |
Ngày 15/10/2018 |
71
Chia sẻ tài liệu: Đề thi Toán - Tin học trong nhà trường (Bài 48+49+50) thuộc Sinh học 7
Nội dung tài liệu:
Bài 48/2000 - Những chiếc gậy
(Dành cho học sinh THPT)
Program bai48;
Var x:array[0..10000] of word;
d,a:array[1..1000] of byte;
n,p,s,gtmax:word;
fi,fo:text;
ok:boolean;
Procedure Q_sort(l,k:word);
Var h,i,j,t:word;
Begin
h:=a[(l+k)div 2];i:=l;j:=k;
Repeat
While a[i]>h do inc(i);
While a[j] If i<=j then
Begin
t:=a[i];a[i]:=a[j];a[j]:=t;
inc(i);dec(j);
End;
Until i>j;
if i if j>l then Q_sort(l,j);
End;
Procedure phan(var ok:boolean);
Var i,p1,j:word;
Begin
Fillchar(x,sizeof(x),0);x[0]:=1;
For i:=1 to n do
If (d[i]=0) then
For j:=p downto a[i] do
If (x[j]=0) and(x[j-a[i]]<>0) then
Begin
x[j]:=i;
if j=p then
Begin
j:=a[i];
i:=n;
End;
End;
ok:=(x[p]<>0);
if ok then
Begin
p1:=p;
Repeat
d[x[p1]]:=1;
p1:=p1-a[x[p1]];
Until p1=0;
End;
End;
Procedure chat(Var ok:boolean);
Var i:word;
Begin
Fillchar(d,sizeof(d),0);
Repeat
phan(ok);
Until not ok;
ok:=true;
for i:= n downto 1 do
if d[i]=0 then
Begin
ok:=false;
break;
End;
End;
Procedure Tinh;
Begin
For p:=gtmax to s div 2 do
Begin
chat(ok);
if ok then
Begin
writeln(fo,p);
break;
End;
End;
If not ok then
Writeln(fo,s);
End;
Procedure Start;
Var i:word;
Begin
assign(fi,`input.txt`);reset(fi);
assign(fo,`output.txt`);rewrite(fo);
While not seekeof(fi) do
Begin
Readln(fi,n);
if n<>0 then
Begin
gtmax:=0;s:=0;
for i:=1 to n do
Begin
Read(fi,a[i]);
s:=s+a[i];
if a[i]> gtmax then
gtmax:=a[i];
End;
Q_sort(1,n);
Tinh;
End;
End;
Close(fi);Close(fo);
End;
Begin
Start;
End.
9
5 2 1 5 2 1 5 2 1
4
1 2 3 4
0
(Lời giải của bạn Tăng Hải Anh - Hải Dương - TP. Hải Phòng)
Bài 49/2001 - Một chút nhanh trí
(Dành cho học sinh Tiểu học)
Theo giả thiết khi chia A và lập phương của A cho một số lẻ bất kỳ thì nhận được số dư như nhau, tức là: A3 (mod N) = A (mod N), ở đây N số lẻ bất kỳ, chọn N lẻ sao cho N > A3 thì ta phải có A3= A suy ra A=1.
Vậy chỉ có số 1 thoả mãn điều kiện của bài toán.
Bài 50/2001 - Bài toán đổi màu bi
(Dành cho học sinh THCS và PTTH)
Program ba_bi;
Uses crt;
var v,x,d:integer;
BEGIN
Clrscr;
writeln(`v x d ?(>=0)`);
readln(v,x,d);
if ((v-x)mod
(Dành cho học sinh THPT)
Program bai48;
Var x:array[0..10000] of word;
d,a:array[1..1000] of byte;
n,p,s,gtmax:word;
fi,fo:text;
ok:boolean;
Procedure Q_sort(l,k:word);
Var h,i,j,t:word;
Begin
h:=a[(l+k)div 2];i:=l;j:=k;
Repeat
While a[i]>h do inc(i);
While a[j]
Begin
t:=a[i];a[i]:=a[j];a[j]:=t;
inc(i);dec(j);
End;
Until i>j;
if i
End;
Procedure phan(var ok:boolean);
Var i,p1,j:word;
Begin
Fillchar(x,sizeof(x),0);x[0]:=1;
For i:=1 to n do
If (d[i]=0) then
For j:=p downto a[i] do
If (x[j]=0) and(x[j-a[i]]<>0) then
Begin
x[j]:=i;
if j=p then
Begin
j:=a[i];
i:=n;
End;
End;
ok:=(x[p]<>0);
if ok then
Begin
p1:=p;
Repeat
d[x[p1]]:=1;
p1:=p1-a[x[p1]];
Until p1=0;
End;
End;
Procedure chat(Var ok:boolean);
Var i:word;
Begin
Fillchar(d,sizeof(d),0);
Repeat
phan(ok);
Until not ok;
ok:=true;
for i:= n downto 1 do
if d[i]=0 then
Begin
ok:=false;
break;
End;
End;
Procedure Tinh;
Begin
For p:=gtmax to s div 2 do
Begin
chat(ok);
if ok then
Begin
writeln(fo,p);
break;
End;
End;
If not ok then
Writeln(fo,s);
End;
Procedure Start;
Var i:word;
Begin
assign(fi,`input.txt`);reset(fi);
assign(fo,`output.txt`);rewrite(fo);
While not seekeof(fi) do
Begin
Readln(fi,n);
if n<>0 then
Begin
gtmax:=0;s:=0;
for i:=1 to n do
Begin
Read(fi,a[i]);
s:=s+a[i];
if a[i]> gtmax then
gtmax:=a[i];
End;
Q_sort(1,n);
Tinh;
End;
End;
Close(fi);Close(fo);
End;
Begin
Start;
End.
9
5 2 1 5 2 1 5 2 1
4
1 2 3 4
0
(Lời giải của bạn Tăng Hải Anh - Hải Dương - TP. Hải Phòng)
Bài 49/2001 - Một chút nhanh trí
(Dành cho học sinh Tiểu học)
Theo giả thiết khi chia A và lập phương của A cho một số lẻ bất kỳ thì nhận được số dư như nhau, tức là: A3 (mod N) = A (mod N), ở đây N số lẻ bất kỳ, chọn N lẻ sao cho N > A3 thì ta phải có A3= A suy ra A=1.
Vậy chỉ có số 1 thoả mãn điều kiện của bài toán.
Bài 50/2001 - Bài toán đổi màu bi
(Dành cho học sinh THCS và PTTH)
Program ba_bi;
Uses crt;
var v,x,d:integer;
BEGIN
Clrscr;
writeln(`v x d ?(>=0)`);
readln(v,x,d);
if ((v-x)mod
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Thân Thị Thanh
Dung lượng: 34,50KB|
Lượt tài: 2
Loại file: doc
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)