Bài 1: Viết chương trình
nhập số nguyên K ( K > 1), và N số nguyên (N >= 1).
Đưa ra màn hình độ dài đoạn lớn nhất các phần tử
liên tiếp nhau cùng chia hết cho K.
Chương
trình:
uses
crt;
var
a,b,c:array[0..1000] of longint;
i,j,n,k,max:longint;
function
kiemtra(n,k:longint):boolean;
var
kt:boolean;
begin
kt:=true;
if
n mod k <> 0 then kt:=false;
kiemtra:=kt;
end;
{---------------------------------------}
begin
clrscr;
write('nhap
so n: ');readln(n);
write('nhap
so k: ');readln(k);
for
i:=1 to n do
begin
write('A[',i,']=
');
readln(a[i]);
b[i]:=0;
end;
max:=1;b[0]:=0;
for
j:=1 to n do
begin
if
kiemtra(a[j],k) then b[j]:=b[j-1]+1 else b[j]:=0;
if
b[j] > b[max] then max:=j;
end;
write('doan
lon nhat chia het cho k co ',b[max],' phan tu.');
readln
end.
Bài
2.
Nhập
một dãy số nguyên và lưu trong một mảng. Không dùng
mảng trung gian, hãy in ra dãy con tăng nghiêm ngặt có tổng
giá trị các phần tử lơn nhất.
VD:
1 3 2 8 10 12 7 29 6 6 3
output:
7 29
chuong
trinh
Var
f,A: array[1..100] of integer;
N,i,max:integer;
Begin
write('Nhap
vao N:'); Readln(N);
For
i:=1 to n do
Begin
write('A[',i,']=');
readln(A[i]);
End;
For
i:=1 to n do f[i]:=1;
max:=1;
for
i:=2 to n do
if
a[i]>a[i-1] then
Begin
f[i]:=f[i-1]+1;
if
f[i]>f[max] then max:=i;
end;
Writeln('Day
con bat dau tu: ',max-f[max]+1,'co ',f[max], ' phan tu');
Readln
End.
Bài
3. Dãy con Fibonacci
Cho
một dãy các số nguyên a1, a2, ..., an (n <= 100). Hãy tìm
trong dãy a một dãy fibonacci dài nhất
-
Dãy fibonacci là dãy có tính chất sau:
F0
= F1 = 1
Fn
= Fn-1 + Fn-2
Dữ
liệu vào: bai2.inp
- Dòng đầu chứa số n ( n <= 100)
- Dòng 2 chứa n số nguyên (ai <= 100000)
Dữ
liệu ra: bai2.out
-
Chứa duy nhất một dòng là dãy Fibonacci tìm được
var
a:
array[1..100] of integer;
i,n,dem,max,k:
integer;
f1,
f2: text;
begin
assign(f1,’fibo.inp’); reset(f1);
assign(f2,’fibo.out’); rewrite(f2);
readln(f1,n);
for
i := 1 to n do read(f1,a[i]);
i:=
1; max:= 0; k := 0;
while
i < n do
begin
IF
( a[i] = 1) and (a[i + 1] = 1) then
begin
dem
:= 2;
while
(a[i+2] = a[i] + a[i+1]) and (i <= n-2) do
begin
dem
:= dem + 1;
i
:= i + 1;
end;
end;
if
dem > max then
begin
max := dem ; k := i+ 1;
end;
i
:= i + 1;
end;
for
i:= k – dem + 1 to k do write(f2,a[i],’ ‘);
close(f1); close(f2);
end.
Sign up here with your email
2 nhận xét
Write nhận xétAD cho mình hỏi ở bài 2 mình chạy chương trình ở trên sau lại ra kết quả là: 2, 8, 10, 12
Replykhác với kết quả output của AD cho vậy?( Mong AD giải thích, cho mình cảm ơn).
như bùi
ReplyConversionConversion EmoticonEmoticon