4月3号的比赛了,最后81名,做了一道密码一道逆向。
因为没进线下,而且准备考研,wp没写,把草稿放博客吧。
crypto 1
An interesting equation: x/(y+z)+y/(z+x)+z/(x+y)=4 x,y,z∈Z+ (mlzeng.com)
Magma Calculator (usyd.edu.au)
sage: R.<x,y,z> = QQ[];
sage: F= x**3 + y**3 + z**3 - 5 * x**2 * (y + z) - 5 * y**2 * (
....: z + x) - 5 * z**2 * (x + y) - 9 * x * y * z;
sage: WeierstrassForm(F)
(-14835/16, 347687/32)
sage:
sage: E = EllipticCurve([-14835/16, 347687/32])
sage: E.rank()
1
sage: E.gens()
[(-129/4 : 85 : 1)]
sage:
(sage-sh) iyzyi@LAPTOP-1BTL2B1A:桌面$ sage ./6.sage
(-23, -7, 3)
(-8, -7, 5)
(-7, -23, 3)
(-7, -8, 5)
(-5, 7, 8)
(-5, 8, 7)
(-3, 7, 23)
(-3, 23, 7)
(-1, -1, 1)
(-1, 0, 1)
(-1, 1, 0)
(-1, 1, 1)
(0, -1, 1)
(1, -1, 0)
(1, -1, 1)
(7, -5, 8)
(7, -3, 23)
(8, -5, 7)
(23, -3, 7)
(sage-sh) iyzyi@LAPTOP-1BTL2B1A:桌面$
R<x,y,z> := RationalFunctionField(Rationals(),3);
problem := ((x/(y+z) + y/(x+z) + z/(x+y)) - 6) ;
Evaluate(problem,[-23, -7, 3]);
problem*Denominator(problem);
P2<x,y,z> := ProjectiveSpace(Rationals(),2);
C := Curve(P2,x^3 - 5*x^2*y - 5*x^2*z - 5*x*y^2 - 9*x*y*z - 5*x*z^2 + y^3 - 5*y^2*z - 5*y*z^2 + z^3);
Pt := C![-23, -7, 3];
E,f := EllipticCurve(C);
g := f^-1;
for n:= 1 to 100 do
nPt_inE:=n*f(Pt);
nPt_inC:=g(nPt_inE);
X := Numerator(nPt_inC[1]);
Y := Numerator(nPt_inC[2]);
Z := Denominator(nPt_inC[1]);
printf "X=%o\nY=%o\nZ=%o\n",X,Y,Z;
if ((X gt 0) and (Y gt 0)) then
printf("GOT IT!!! x=apple, y=banana, z=pineapple, check the above solution\n");
break;
else
printf "Nee, some coordinate was negative above, I keep in the loop\n\n";
end if;
end for;
if Evaluate(problem, [X,Y,Z]) eq 0 then
printf "I evaluated the point to the original problem and yes, it worked!\n";
else
printf "Mmm this cannot happen!\n";
end if;
📮评论