[Lập trình newbie] Mỗi ngày một bài toán (số 9)

Bài số 8 đã kết thúc êm đẹp với một ý tưởng khá đơn giản nhưng lại hiệu quả của bạn Cao Văn Nhàn :look_down:. Chúng ta sẽ tiếp tục sang bài số 9, bài toán kinh điển mà hầu như rất hay gặp lúc đi test mấy công ty lập trình :badsmell:.
Bài toán:
GCD(Greatest common divisor - UCLN) hoặc LCM (Least common multiple - BCNN): Cho 2 số <= 2 tỉ, tìm GCD và LCM của nó.
Time limit:1s
Memory: 5MB
Ví dụ:
Input:
15 85
Output:
5---->//UCLN
255----->//BCNN

Have fun :happy:

GDC thì dễ xơi chứ LCM thì căng đấy :confused::nosebleed:

lần này xài kiểu long để anh Điệp khỏi bắt nữa. hì hì.
bội chung nhỏ nhất của hai số = tích của 2 số đó chia cho USCLN của 2 số đó luôn.

#include <iostream>
using namespace std;
long a,b;
long USCLN(long a, long b)
{    
    return (b==0)?a:USCLN(b, a%b);
}
int main()
{
    cin>>a>>b;
    cout<<USCLN(a,b)<<" "<<((long long )a*b)/USCLN(a,b);
    return 0;
}

Tính GCD thì em dùng cách này:


#include <iostream>
using namespace std;
long ucln(long a, long b)
{
	while(a!=b)
	{
		if(a>b)
			a-=b;
		else
			b-=a;
	}
	return a;
}
int main()
{
	long a, b, c;
	cin>>a;
	cin>>b;
	c=ucln(a,b);
	cout<<c<<endl<<a/c *b;
	return 0;
}

[QUOTE=10520355;67294]lần này xài kiểu long để anh Điệp khỏi bắt nữa. hì hì.
bội chung nhỏ nhất của hai số = tích của 2 số đó chia cho USCLN của 2 số đó luôn.
[/QUOTE]

công thức này hồi học tin đại cương mới ibk :smiley:
có vẻ như cấp 3 mình bỏ qua nhiều thứ quá :smiley:

[QUOTE=10520355;67294]lần này xài kiểu long để anh Điệp khỏi bắt nữa. hì hì.
bội chung nhỏ nhất của hai số = tích của 2 số đó chia cho USCLN của 2 số đó luôn.

#include <iostream>
using namespace std;
long a,b;
long USCLN(long a, long b)
{    
    return (b==0)?a:USCLN(b, a%b);
}
int main()
{
    cin>>a>>b;
    cout<<USCLN(a,b)<<" "<<((long long )a*b)/USCLN(a,b);
    return 0;
}

[/QUOTE]

Hihi anh bắt lỗi đúng mừ :brick:
long long với kiểu long trong C++ hình như là như nhau :sure:

GDC ở đây chỉ in ra thui nhỉ?? Nếu cần lưu lại để làm cái khác thì sao nhỉ?? :funny:

mấy bài em post lên thì em đã test khá kĩ và test ngoài giới hạn của nó cả, rất là ok đó anh. hehe.

[QUOTE=10520355;67357]mấy bài em post lên thì em đã test khá kĩ và test ngoài giới hạn của nó cả, rất là ok đó anh. hehe.[/QUOTE] Hehe em nắm kiến thức lập trình tốt đấy :sogood: nhân tố hạt giống cho Olympic Tin Học UIT :go:
Mà anh có 1 thắc mắc ko bik em có phải em của anh Cao Văn An ko nhỉ?? :confused: ngoài lề thui nhé

[QUOTE=09520500;67360]Hehe em nắm kiến thức lập trình tốt đấy :sogood: nhân tố hạt giống cho Olympic Tin Học UIT :go:
Mà anh có 1 thắc mắc ko bik em có phải em của anh Cao Văn An ko nhỉ?? :confused: ngoài lề thui nhé[/QUOTE]
An Nhàn hả chú

Thì Cao Văn An - Cao Văn Nhàn . Ờ mà nghi cũng đúng :smiley:

em là em trai của anh Cao Văn An. kakakakaka

:)))), quả không nằm ngoài dự đoán hehe

:happy: gia cát dự chuẩn như điên :misdoubt:

An Nhàn, hợp rầu :smiley:
bài toán số 9 là bài toán tìm huyết thống :))

[QUOTE=11520447;67504]An Nhàn, hợp rầu :smiley:
bài toán số 9 là bài toán tìm huyết thống :))[/QUOTE]
Sau này có bài toán tìm người yêu ra đời cho coi :smiley:
Mà chưa có bài số 10 để bàn tán nhỉ :frowning:

[QUOTE=09520281;67250]Bài số 8 đã kết thúc êm đẹp với một ý tưởng khá đơn giản nhưng lại hiệu quả của bạn Cao Văn Nhàn :look_down:. Chúng ta sẽ tiếp tục sang bài số 9, bài toán kinh điển mà hầu như rất hay gặp lúc đi test mấy công ty lập trình :badsmell:.
Bài toán:
GCD(Greatest common divisor - UCLN) hoặc LCM (Least common multiple - BCNN): Cho 2 số <= 2 tỉ, tìm GCD và LCM của nó.
Time limit:1s
Memory: 5MB
Ví dụ:
Input:
15 85
Output:
5---->//UCLN
255----->//BCNN

Have fun :happy:[/QUOTE]
Bài toán này học lớp 11 em cũng giải được ngon lành kaka