CALENDAR
S M T T F S
 123456
78910111213
14151617181920
21222324252627
282930    
<< June 2020 >>
ARCHIVES
CATEGORIES
RECOMMEND
RECOMMEND
Javaデザインパターン徹底攻略 (標準プログラマーズライブラリ)
Javaデザインパターン徹底攻略 (標準プログラマーズライブラリ) (JUGEMレビュー »)
日立ソフトウェアエンジニアリングインターネットビジネス部
RECOMMEND
RECOMMEND
独習Java第3版
独習Java第3版 (JUGEMレビュー »)
ジョゼフ・オニール
MOBILE
qrcode
x^3+y^3+z^3 = 42

JUGEMテーマ:Java

 

頭脳王だったかで出た問題

 

「x^3+y^3+z^3=42を満たす整数解x, y, zを求めよ」

 

どうやら、計算したのではなかったようですね

 

で、実際にどうなのかjavaでコード書いて確かめてみた

 

 

 

import java.math.BigDecimal;

public class Pow3Test {

    public static void main(String[] args) {

        BigDecimal bigX = new BigDecimal("-80538738812075974");
        BigDecimal bigY = new BigDecimal("80435758145817515");
        BigDecimal bigZ = new BigDecimal("12602123297335631");

        System.out.println(bigX.pow(3).add(bigY.pow(3)).add(bigZ.pow(3)));

    }

}

 

実行結果

 

42

 

 

答えを知っているからできたようなもの、

こんなの、計算で求めろとか無理でしょ(笑)

 

BigDecimal・・・極端に大きな数や浮動小数点の計算をするときに使用します。

double型だと誤差が出る場合があります。

 

ちなみに、上記のコードですがBigDecimalのコンストラクタの値をdouble型にして渡すと、42になりません

 

↓こんな感じ

 

import java.math.BigDecimal;

public class Pow3Test {

    public static void main(String[] args) {

        BigDecimal bigX = new BigDecimal(-80538738812075974d);
        BigDecimal bigY = new BigDecimal(80435758145817515d);
        BigDecimal bigZ = new BigDecimal(12602123297335631d);

        System.out.println(bigX.pow(3).add(bigY.pow(3)).add(bigZ.pow(3)));

    }

}

 

実行結果

 

214281900452106748271702072587124736

 

 

差が出すぎだ・・・

 

| JAVAとか | 00:02 | comments(0) | - | pookmark |
<< 違法薬物よりも・・・ | main | ペットントン >>
コメント
コメントする