0

LCMを計算するためにspojで与えられた問題のコードを書きました。2 つの数値の gcd を計算し、2 つの数値の乗算を gcd で割り、2 つの数値の lcm を求めましたが、間違った答えを示しています。

問題はhttp://www.spoj.com/problems/WPC5I/にあります

import java.math.BigInteger;
import java.util.Scanner;

class Lcm1 {
    public static void main(String args[]) throws Throwable {
        try {
            Scanner s = new Scanner(System.in);
            int siz = s.nextInt();
            for(int i = 0; i< siz; i++) {
                BigInteger a = s.nextBigInteger(), b = s.nextBigInteger();
                System.out.println((a.multiply(b)).divide(a.gcd(b)));
            }
        }
        catch(Exception e){}
    }
}
4

1 に答える 1

0

あなたの論理は部分的に間違っています.基本的に、あなたは与えられた数のlcmを計算しているだけですが、ユーザーは与えられた条件を満たす最小のkを見つけるように求めています.しかし、あなたのものは最小のkではありません. ケース n=340 と m=230 を試してみてください。実際の ans は 1564 ですが、コードでは 7820 が返されます。

注: lcm は、問題の特定の条件を満たす最小の k であるとは限りません。

ヒント: m,n を素因数分解して答えを求めてみてください。

于 2014-04-11T21:29:11.317 に答える