Cho dãy gồm n số nguyên dương A1, A2, …, An. Hãy đếm xem trong dãy có bao nhiêu cặp số ở vị trí khác nhau mà số này là bội của số kia hoặc ngược lại. Dữ liệu vào: Vào từ tệp văn bản DEMBS.INP gồm: + Dòng đầu ghi số nguyên dương n (2 ≤ n ≤1000); + Dòng thứ hai ghi n số nguyên dương A1, A2, …, An có giá trị không vượt quá 1000. Kết quả: Ghi ra tệp văn bản DEMBS.OUT số lượng các cặp số thỏa điều kiện bài toán. Ví dụ: DEMBS.INP DEMBS.OUT 4 2 3 6 2 7
2 câu trả lời
B là bội của a nếu B = N*A ⇒ B chia hết cho A
Dùng 2 vòng lặp tìm số chia hết cho nhau và co vào 2 chuỗi khác nhau. Tìm các kí tự trùng lập trong2 chuỗi và cuối cùng xuất ra số căp(độ dài chuỗi dài hơn);
Code
Program dembs;
Uses crt;
Var a:array[1..1000] of integer;
i,j,n:integer;
b,c,b1,c1:string;
fi,fo:text;
BEGIN
assign(fi,'dembs.inp');
assign(fo,'dembs.out');
reset(fi);
Readln(fi,n);
For i := 1 to n do read(fi,a[i]);
close(fi);
For i := 1 to n do
For j := 1 to n do if j mod i = 0 then
begin
str(a[i],b1);
str(a[j],c1);
b := b + b1;
c := c + c1;
end;
For i := 1 to length(b) do
for j := 1 to length(b) do
if b[i]=b[j] then delete(b,j,1);
For i:= 1 to length(c) do
for j := 1 to length(c) do
if c[i]=c[j] then delete(c,j,1);
rewrite(fo);
If length(b) > length(c) then write(fo,length(b)) else write(fo,length(c));
close(fo);
END.
uses crt;
var f:text; n,i,j,d:longint; a:array[1..10000] of longint;
begin
clrscr;
assign(f,'DEMBS.INP');reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
close(f);
assign(f,'DEMBS.OUT');rewrite(f);
for i:=1 to n-1 do
for j:=i+1 to n do
begin
if a[i] mod a[j]=0 then d:=d+1;
if a[j] mod a[i]=0 then d:=d+1;
end;
writeln(f,d);
close(f);
end.