パズル
一辺 10cm の立方体がある。これを分割して、大きさが異なる二種類の立方体で1001個に分けられるか。
fermat - 白のカピバラの逆極限 S.144-3
ふむ。
整数a,b,x,y,z>0について、
a+b=1001
x!=y
となるa,b,x,y,zの組を小さい方から順に求めよ
全部で何通りあるのかは判らなかったので、
これを解くプログラムを書くのは簡単なので書いてみました。
x,y<1000では、
(a,b,x,y,z) (752,249,1,2,14) (955,46,1,3,13) (937,64,6,13,70)
の三つが候補として見つかりました(上記の比例となるものは除いています)が、
最後のやつがちゃんと収まるのかどうかが僕の頭では組み立てられません。
無理なような気はするんだけど、証明できない。
誰か判ったら教えてください〜(オラクルの人とか)
(追記)70x70に6x6と13x13だけで埋めることが無理なので3Dでも無理。
生成に使ったプログラムも載っけときます。
import java.util.*; class A { public static void main(String[] args) { int a,b,x,y; ArrayList<Tuple> list = new ArrayList<Tuple>(); for (x=1; x<1000; x++) { for (y=x+1; y<1000; y++) { LOOP : for (a=1; a<1001; a++) { b = 1001-a; long z3 = a*x*x*x+b*y*y*y; long z = (long)Math.cbrt(z3); long bpl = z/y; if (z3==z*z*z && bpl*bpl*bpl>=b) { for (Tuple t : list) { if ((x%t.x|y%t.y|z%t.z)==0) { continue LOOP; } } list.add(new Tuple(x, y, z)); System.out.println("a="+a+", b="+b+", x="+x+", y="+y+", z="+z); } } } } } } class Tuple { int x, y; long z; Tuple(int _x, int _y, long _z) { x = _x; y = _y; z = _z; } }