Tìm UCLN và BCNN của 2 số. Em chạy trên IDE Dev C++ dùng nhiều số test thử kiểm tra chạy vẫn đúng nhưng khi đưa lên spoj.pl chạy thử thì lun báo sai kết quả. mong các anh chị kiểm tra lại dùm em
Đề bài : http://www.spoj.pl/PTIT/problems/BCGCD/
Code:
Tìm UCLN và BCNN của 2 số.
Input
Gồm nhiều test, mỗi test trên 1 dòng chứa 2 số nguyên dương không quá 231
Bộ test kết thúc bởi dòng chứa 2 số 0.
Output
Mỗi test xuất ra trên 1 dòng chứa 2 số cách nhau bởi dấu cách lần lượt là UCLN và BCNN.
Example
Input:
2 4
6 9
0 0
Output:
2 4
3 18
Đây là bài làm của mình :
Code:
#include<stdio.h>
long UCLN(long a, long b)
{
if(a == 0 || b == 0) return a+b;
if(a < 0) a = -a;
if(b < 0) b = -b;
while(a != 0 && b != 0)
{
if(a > b) a = a % b;
else b = b % a;
}
return a + b;
}
main()
{
long s[100][2];
int k=0;
long a, b;
while(1)
{
scanf("%ld%ld", &a, &b);
if(a ==0 && b==0) break;
s[k][0] = a;
s[k][1] = b;
k++;
}
for(int i=0; i<k; i++)
{
long long ucln = UCLN(s[i][0], s[i][1]);
long long bcnn = ucln == 0 ? 0 : ((s[i][0] / ucln) * s[i][1]);
printf("%lld %lld\n", ucln, bcnn);
}
}
Code:
8129073 2012-11-26 09:53:21 Ước chung lớn nhất, bội chung nhỏ nhất (Cơ bản) kết uả sai edit run 0.00 2.6M C++
4.0.0-8