Đến nội dung

Hình ảnh

XEM GIÚP BÀI CUA MÌNH BỊ LỖI GÌ VẬY AK


  • Please log in to reply
Chủ đề này có 2 trả lời

#1
vansonqtqb

vansonqtqb

    Lính mới

  • Thành viên mới
  • 6 Bài viết
CONST   MAX = 32001;
        fi = 'UC.INP';
        fo = 'UC.OUT';
type numArray = array[1..MAX] of shortint;
var a, b : numArray;
    n, m : integer;
    f : text;
 
 
procedure doc;
var x : char;
    i, so, code : integer;
begin
    assign(f, fi); reset(f);
    readln(f, n, m);
    for i:=1 to MAX do begin a[i]:=0; b[i]:=0; end;
    for i:=n downto 1 do
        begin
            read(f, x);
            val(x, so, code);
 
            a[i] := so;
        end;
    readln(f);
    for i:=m downto 1 do
        begin
            read(f, x);
            val(x, so, code);
            b[i] := so;
        end;
    close(f);
end;
 
 
function compare(a: numArray; na: integer; b: numArray; nb: integer) : shortint;
var i : integer;
begin
    if (na < nb) then exit;COMPARE:= 1;
    if (na > nb) then exit; COMPARE:= -1;
    for i := na downto 1 do
        begin
            if (a[i] > b[i]) then exit;COMPARE := 1;
            if (a[i] < b[i]) then exit;COMPARE:= -1;
        end;
    exit;
    COMPARE:= 0;
end;
 
 
procedure differences(var a: numArray; var n: integer; b: numArray; M: integer);
var i, index : integer;
    nho : shortint;
begin
    nho := 0;
    index := 1;
    for i := 1 to n do
        begin
            if (a[i] >= b[i] + nho) then
                begin
                    a[i] := a[i] - b[i] - nho;
                    nho := 0;
                end
            else
                begin
                    a[i] := a[i] + 10 - b[i] - nho;
                    nho := 1;
                end;
            if (a[i] > 0) then
                index := i;
        end;
    n := index;
end;
 
 
procedure greatestCommonDivisor(var a: numArray; var n: integer; var b: numArray; var M: integer);
var t : shortint;
begin
    t := compare(a, n, b, M);
    while (t <> 0) do
        begin
            if (t > 0) then
                differences(a, n, b, M);
            if (t < 0) then
                differences(b, M, a, n);
            t := compare(a, n, b, M);
        end;
end;
 
 
procedure xuat;
var i : integer;
begin
    assign(f,fo); rewrite(f);
    for i := n downto 1 do write(a[i]);
    close(f);
end;
 
 
begin
    doc;
    greatestCommonDivisor(a, n, b, m);
    xuat;
end.
 


#2
thang1308

thang1308

    Trung sĩ

  • Thành viên
  • 197 Bài viết

ban ghi đề ra đi


Hôm nay thi xong. Căn bản là mệt!!! :wacko:  :wacko:


#3
vansonqtqb

vansonqtqb

    Lính mới

  • Thành viên mới
  • 6 Bài viết

Cho số X gồm N chữ số, Số Y gồm M chữ số (1<=M<=32000; 1<=N<=32000)).

Yêu cầu: Tính ucln 2 số X và Y.

Dữ liệu vào: Cho trong file văn bản UC.INP có cấu trúc như sau:

Dòng 1: Ghi 2 số nguyên dương N M mỗi số cách nhau một dấu cách.

Dòng 2: Ghi số X

Dòng 3: Ghi số Y

Dữ liệu ra: Ghi ra file UC.OUT, theo cấu trúc như sau:

Dòng 1: Ghi giá trị UCLN.

Ví dụ:

UC.INP

UC.OUT

3 4

  333

5436

9






1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh