합리적 분해 a = xyz (x + y + z)


21

쓰기 기능 x(a), y(a)그리고 z(a)이러한 모든 합리적 동안 그 a 모든 기능은 유리수를 반환 하고 x(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a. ≥ 0이라고 가정 할 수 있습니다.

프로그램이 수학적으로 건전한 경우 프로그램에서 합리적인 유형이나 연산을 사용할 필요가 없습니다. 예를 들어 답에 제곱근을 사용하면 해당 인수가 항상 합리적인 수의 제곱임을 보여 주어야합니다.

언어가 번거 롭거나 존재하지 않는 경우 세 개의 명명 된 함수 x, y, z를 쓰거나 대신 세 개의 프로그램을 작성할 수 있습니다. 또는 세 개의 숫자 x, y, z를 반환하는 단일 프로그램 / 함수를 작성할 수도 있습니다. 마지막으로 원하는 경우 유리수를 분자 / 분모 쌍으로 입력 / 출력 할 수 있습니다. 점수는 3 가지 기능 또는 3 가지 프로그램의 총 크기 (바이트)입니다. 가장 작은 점수가 이깁니다.

무차별 강요는 허용되지 않습니다. p, q ≤ 1000 인 a = p / q의 경우 프로그램은 10 초 이내에 실행해야합니다.


예를 들어 분해가이 숫자를 제공해야한다는 의미는 아닙니다.

x = 9408/43615
y = 12675/37576
z = 1342/390
x*y*z*(x+y+z) = 1

우리는 그것들을 모두 출력하는 하나의 함수를 작성할 수 있습니까 (예 : 배열)?
Leaky Nun

분자와 분모를 두 개의 숫자로 입력 할 수 있습니까?
Leaky Nun

@LeakyNun 예, 그렇습니다.
orlp

1
그것은 아마도 어떤 일을 할 수 a있습니까?
Fatalize

2
나는 당신이 해결책을 줄 수 있기 때문에 증거를 보여주고 싶지 않다고 가정하지만, 당신의 말은 실제로 증거가 아닙니다.
Fatalize

답변:


10

CJam (59 바이트)

{[WZ~C24X8TT]f*[4XGYC6 4Y].+_0=!>2%Z65135Zb+:(3/.f#:.*)W*+}

이것은 익명 블록 (함수)으로 스택에서 정수 또는 두 배를 취하고 세 배의 배가있는 배열을 생성합니다. 그것은 모든 음이 아닌 입력을 처리하는 단 하나의 케이스 이후 중 하나에 휴식 것이 내부적으로 같이 2 가지 방법으로 사용할 수 있습니다 0.25또는 4. 아직 입력에 대해 나누기 -12-1.3333333333333333하지만 사양은 할 수 있습니다 ...

온라인 데모 를 실행 한 다음 값을 추가, 네를 인쇄하고, 곱 그들은 원래의 값 (모듈로 반올림 오류)를 얻을 수 있음을 표시합니다.

수학적 배경

Noam Elkies 다음 에 보조 정의합니다 . 그런 다음 x + y + z + w = 0 이고 x y z w = a 또는 x y z w + a = 0 입니다. 이것은 많은 대칭성을 가지고 있습니다. 어떤 솔루션이든 4 가지 공식을 가지게되며 가장 골치 아픈 3 가지를 선택할 수 있습니다.=엑스와이엑스+와이++=0엑스와이=에이엑스와이+에이=0

Elkies는 4 가지 제품군의 솔루션을 제공합니다. 오일러 :

엑스=6에이에스(에이42에스4)2(4에이4+에스4)(2에이28+10에이에스44에스8)와이=에스5(4에이4+에스4)22(에이42에스4)(2에이28+10에이에스44에스8)=2(2에이28+10에이에스44에스8)에스(4에이4+에스4)=(2에이28+10에이에스44에스8)6에스(에이42에스4)

오일러와 관련된 것 :

엑스=(8에스8+에이2)(8에스888에이에스4에이2)12에스(에스4에이)(8에스8+20에이에스4에이2)와이=(8에스8+에이2)(8에스888에이에스4에이2)12에스(8에스4+에이)(8에스8+20에이에스4에이2)=192에이에스5(에스4에이)2(8에스4+에이)2(8에스8+에이2)(8에스888에이에스4에이2)(8에스8+20에이에스4에이2)=에스(8에스8+20에이에스4에이2)4(에스4에이)(8에스4+에이)(8에스8+에이2)(8에스888에이에스4에이2)

더 간단한 것 :

엑스=(에스44에이)22에스(에스4+12에이)와이=2에이(에스4+4에이)2에스(에스44에이)(에스4+12에이)=에스5+12에이에스2(에스4+4에이)=2에스5(에스4+12에이)(에스44에이)(에스4+4에이)

그리고 하나는 관련이 있습니다.

엑스=에스5(에스4에이)2(에스4+에이)(에스12+12에이에스8에이2에스4+2에이)와이=에스12+12에이에스8에이2에스4+2에이2에스(에스4에이)(에스4에이)=2에이(에스4+에이)2(에스4에이)2에스(에스4에이)(에스12+12에이에스8에이2에스4+2에이)=2에스(에스12+12에이에스8에이2에스4+2에이)(에스4에이)(에스4+에이)(에스4에이)

모든 가족은 양성을 위해 형식의 분모가 두 개 이상 있는지 확인하십시오.에스4에이에이에이에스=1에스=2


1

공리, 191 바이트

f(s,a)==(b:=s^4-4*a;c:=s^4+12*a;x:=3*s^4+4*a;[b^2/(2*c*s^3),2*a*x^2/(b*c*s^3),s*c/(2*x)])
g(a:FRAC INT):List FRAC INT==(s:=1;repeat(s^4=4*a or s^4=-12*a or 3*s^4=4*a=>(s:=s+1);break);f(s,a))

이 페이지에서 Peter Taylor 보고서의 공식은 일부 코드를 사용하여 분모가 0이되지 않도록합니다.

(7) -> y:=g(1)
          9   98 13
   (7)  [--,- --,--]
         26   39 14
                                              Type: List Fraction Integer
(8) -> y.1*y.2*y.3*(y.1+y.2+y.3)
   (8)  1
                                              Type: Fraction Integer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.