4

目的は、2つの3桁の数字の積であり、回文である最大の数字を見つけることです。次のコードをJavaで記述しましたが、実行しても出力がありません。何が間違っている可能性がありますか?

public class Problem4{
    public static void main(String[] args){
        int reversedProduct=0;
        int temp=0;
        int product;
        for (int a=100; a<1000; ++a){
            for (int b=100; b<1000; ++b){
                product=a*b;
                while (product>0){
                    temp = product%10;
                    reversedProduct=reversedProduct*10+temp;
                    product=product/10;
                } if (reversedProduct==product){
                    System.out.println(product);
                }
            }
        }
    }
}
4

1 に答える 1

5

productあなたはそれを逆転させる過程でゼロにしています。コピーを作成し、反転した製品と比較する必要があります。

int orig = product;
while (product>0){
    temp = product%10;
    reversedProduct=reversedProduct*10+temp;
    product=product/10;
}
if (reversedProduct==orig){
    System.out.println(reversedProduct);
}

この時点で、ソリューションは最も遅い回文だけでなく、すべての回文を出力することに注意してください。ただし、最大のものを取得するのは簡単です。

于 2012-05-19T23:28:50.827 に答える