1. 程式人生 > 其它 >[WUSTCTF2020]大數計算

[WUSTCTF2020]大數計算

題目附件:

 題目描述內容:

 圖片附件內容:

分析題意,很明顯是要我們求出每一部分的part的解,最後用“-”連線,幷包上 wctf2020{}

(1)求解第一部分:Part1 = 2020*2019*2018* ... *3*2*1 的前8位

根據要求直接寫程式碼:

part1 = 1
for i in range(1,2021):
part1 *= i
print("part1 =",str(part1)[:8])
# part1 = 38609695

(2)求解第二部分:Part2 = 520^1314 + 2333^666 的前8位
根據要求直接寫程式碼:
part2 = 520**1314 + 2333**666

print("part2 =",str(part2)[:8])
# part2 = 67358675

(3)求解第三部分:Part3 = 宇宙終極問題的答案 x,y,z絕對值和的前8位
這裡宇宙終極問題的答案網站(http://www.360doc.com/content/19/0907/17/28085222_859686590.shtml)
得到
42 =(-80538738812075974)³+ 80435758145817515³+ 12602123297335631³,這裡是取三個數值的絕對值

直接寫程式碼:
x = 80538738812075974
y = 80435758145817515
z = 12602123297335631

part3 = x + y + z
print("part3 =",str(part3)[:8])
# part3 = 17357662

(4)求解第四部分:Part4 = 見圖片附件,計算結果乘上1314

可以算出(2*22+36)*1314 = 683280

最後將這四個部分的值轉為16進位制,flag等於 wctf2020{Part1-Part2-Part3-Part4} 每一Part都為數的十六進位制形式(不需要0x),並用 '-' 連線
程式碼如下:
part1 = hex(38609695)[2:]
part2 = hex(67358675)[2:]
part3 = hex(17357662)[2:]
part4 = hex(683280)[2:]

print("wctf2020{"+part1+"-"+part2+"-"+part3+"-"+part4+"}")
# wctf2020{24d231f-403cfd3-108db5e-a6d10}