Trang chủ Tin Học Lớp 12 Ai giúp mik câu này vs mik đang cần rất...

Ai giúp mik câu này vs mik đang cần rất gấp Vote 5 sao và ctlhn Cho dãy a gồm n số nguyên dương a1, a2, …, an và dãy b gồm m số nguyên dương b1, b2, …, bm. Hai

Câu hỏi :

Ai giúp mik câu này vs mik đang cần rất gấp Vote 5 sao và ctlhn Cho dãy a gồm n số nguyên dương a1, a2, …, an và dãy b gồm m số nguyên dương b1, b2, …, bm. Hai dãy a và b được gọi là tương đương nếu tích các phần tử của dãy a bằng tích các phần tử của dãy b. Yêu cầu: Hãy kiểm tra hai dãy a và b cho trước có tương đương hay không. Dữ liệu: Vào từ file văn bản EQUA.INP gồm ba dòng:  Dòng đầu ghi hai số nguyên n và m (1 ≤ n, m ≤ 100);  Dòng thứ hai ghi n số nguyên dương a1, a2, …, an (1 ≤ ai ≤ 109 ; 1 ≤ i ≤ n);  Dòng thứ ba ghi m số nguyên dương b1, b2, …, bm (1 ≤ bi ≤ 109 ; 1 ≤ i ≤ m). Kết quả: Ghi ra file văn bản EQUA.OUT gồm một số nguyên duy nhất: ghi số 1 nếu hai dãy tương đương với nhau, ghi số 0 nếu hai dãy không tương đương với nhau.

Lời giải 1 :

const fi = 'EQUA.INP';
    fo = 'EQUA.OUT';
var n, m, i: longint;
    x, y, res, ans: AnsiString;

function cmp(a,b : AnsiString): longint;
begin
    while length(a) < length(b) do a:='0' + a;
    while length(b) < length(a) do b:='0' + b;
    if a = b then exit(0);
    if a > b then exit(1);
    exit(-1);
end;

function add(a, b: AnsiString): AnsiString;
var c: AnsiString;
    sum, carry, i: longint;
begin
    carry:=0; c:='';
    while(length(a) < length(b)) do a:='0' + a;
    while(length(b) < length(a)) do b:='0' + b;
    for i:=length(a) downto 1 do
        begin
            sum:=ord(a[i]) - 48 + ord(b[i]) - 48 + carry;
            carry:=sum div 10;
            c:=chr(sum mod 10 + 48) + c;
        end;
    if(carry > 0) then c:='1' + c;
    exit(c);
end;

function sub(a, b: AnsiString): AnsiString;
var ans: AnsiString;
    s, borrow, i: Longint;
begin
    borrow:=0; ans:='';

    while length(a) < length(b) do 
        a:='0' + a;
    while length(b) < length(a) do
        b:='0' + b;

    for i:=length(a) downto 1 do 
        begin
            s:=ord(a[i]) - ord(b[i]) - borrow;
            if s < 0 then
                begin
                    inc(s, 10);
                    borrow:=1;
                end else
                    borrow:=0;
            ans:=chr(s + 48) + ans;
        end;

    while(length(ans) > 1) and (ans[1] = '0') do
        delete(ans, 1, 1);
    exit(ans);
end;

function mul(a, b: AnsiString): AnsiString;
var sum, tmp: AnsiString;
    m, i, j: longint;
begin
    m:=-1; sum:='';
    for i:=length(a) downto 1 do
        begin
            inc(m);
            tmp:='';
            for j:=1 to ord(a[i]) - 48 do tmp:=add(tmp,b);
            for j:=1 to m do tmp:=tmp + '0';
            sum:=add(tmp,sum);
        end;
    exit(sum);
end;

function divv(a, b: AnsiString): AnsiString;
var c, hold: AnsiString;
    kb: array[0..10] of AnsiString;
    i, k: longint;
begin
    kb[0]:='0';
    for i:=1 to 10 do
        kb[i]:=add(kb[i - 1],b);

    hold:=''; c:='';

    for i:=1 to length(a) do
        begin
            hold:=hold + a[i];
            k:=1;
            while cmp(hold,kb[k]) <> -1 do inc(k);
            c:=c+chr(k - 1 + 48);
            hold:=sub(hold, kb[k - 1]);
        end;

    while (length(c) > 1) and (c[1] = '0') do delete(c, 1, 1);
    exit(c);
end;

begin
    assign(input, fi); reset(input);
    assign(output, fo); rewrite(output);
    read(n, m); readln;

    res:='1';
    for i:=1 to n do
        begin
            readln(x);
            res:=mul(res, x);
        end;

    ans:='1';
    for i:=1 to m do 
        begin
            readln(y);
            ans:=mul(ans, y);
        end;


    if(res = ans) then writeln(1) else writeln(0);
    close(input); close(output);
end.

Thảo luận

-- Bạn ơi xem giúp mik bài này nữa nha
-- https://hoidap247.com/cau-hoi/3112531
-- Bạn ơi, bạn có thể giúp mik thêm 1 bài nữa đk? Mik rất cám ơn bạn
-- Bạn ơi, giúp mik với nha, mik cám ơn bạn rất nhiều
-- Bạn ơi, mik cần cách viết cảu bạn á, bạn giúp mik với nha
-- Bạn ơi
-- https://hoidap247.com/cau-hoi/3112531 GIÚP MIK CÂU NÀY VS Ạ

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 12

Lớp 12 - Năm cuối ở cấp tiểu học, năm học quan trọng nhất trong đời học sinh trải qua bao năm học tập, bao nhiêu kì vọng của người thân xung quanh ta. Những nỗi lo về thi đại học và định hướng tương lai thật là nặng. Hãy tin vào bản thân là mình sẽ làm được rồi tương lai mới chờ đợi các em!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247