10.04.2017

Ordered Fractions

Xét tập tất cả các phân số tối giản nằm trong đoạn từ 0 đến 1, với mẫu số là số nguyên dương nhỏ hơn hoặc N và tử số là các số nguyên không âm.
Ví dụ, với N = 5 thì tập này gồm các phân số sau: 0/1, 1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1/1
Bạn hãy viết một chương trình, cho trước một số nguyên N  ghi ra các phân số theo thứ tự tăng.
Dữ liệu: File vào gồm một dòng chứa đúng một số nguyên N.
Kết quả: File ra chứa tất cả các phân số theo thứ tự tăng, mỗi phân số ghi trên một dòng theo định dạng xem trong ví dụ dưới đây.
Ví dụ:
      frac.In                         frac.out
          5                                 0/1
                                             1/5
                                             1/4
                                             1/3
                                             2/5
                                             1/2
                                             3/5
                                             2/3
                                             3/4
                                             4/5
                                             1/1

                                                            Lời giải tham khảo

uses crt;
var
   n,a,b,i,j,r: integer;
begin
     clrscr;
     writeln('Nhap so nguyen duong n: ');readln(n);
     writeln(0,'/',1);
     if n>=1 then writeln(1,'/',1);
     for i:=1 to n do
         for j:=n downto 1 do
             begin
                  b:=i; a:=j;
                  repeat
                        r:=a mod b;
                        a:=b;
                        b:=r;
                  until b=0;
                  if (a=1)and(i<j) then writeln(i,'/',j);
             end;
     readln;
end.

No comments:

Post a Comment

Cảm ơn bạn đã nhận xét