Giải bài toán văn nghệ trong C++ và Pascal

Like Tweet Pin it Share Share Email

Đội văn nghệ xung kích của trường đại học X được cử đi diễn giao lưu ở các huyện trong tỉnh Y. Khi đi đoàn có  bạn nam và  bạn nữ. Mỗi tổ sẽ được giao nhiệm vụ biểu diễn tại một địa điểm phục vụ các em nhỏ. Biết rằng số lượng nam và nữ phải chia đều giữa các tổ. Hỏi người quản lý có thể chia số sinh viên ra tối đa được bao nhiêu tổ? Mỗi tổ có bao nhiêu nam và bao nhiêu nữ.

Dữ liệu vào:

  • Hai số nguyên n, m cách nhau một khoảng trắng

Dữ liệu ra:

  • Dòng 1 ghi số lượng tổ tối đa có thể chia
  • Dòng 2 ghi 2 số a, b tương ứng là số nam và số nữ của mỗi tổ

Ví dụ:

Vn.inp Vn.out
48 72 24

2 3

Code bằng C++

#include <bits/stdc++.h>
using namespace std;
int uc(int x,int y)
{
    while(y>0)
    {
        int r=x%y;
        x=y;
        y=r;
    }
    return x;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int a,b;
freopen("vn.inp","r",stdin);
	freopen("vn.out","w",stdout);
    cin>>a>>b;
    cout<<uc(a,b)<<endl;
    cout<<int(a/uc(a,b))<<" "<<int(b/uc(a,b));
    return 0;
}

Code bằng Pascal

var f1,f2:text;
    m,n,X:longint;
procedure motep;
begin
assign(f1,'vn.inp');
assign(f2,'vn.out');
reset(f1);
rewrite(f2);
end;
function ucln( a,b:longint):longint;
var sodu:longint;
begin
while b<>0 do
 begin
 sodu:=a mod b;
 a:=b;
 b:=sodu;
 end;
ucln:=a;
end;
BEGIN
MOTEP;
READLN(F1,M,N);
X:=UCLN(M,N);
WRITELN(F2,X);
WRITELN(F2,M DIV X,' ',N DIV X);
CLOSE(F1);
CLOSE(F2);
END.

Các bạn hãy comment cho ý kiến nào

Comments (0)

Trả lời

Your email address will not be published. Required fields are marked *