RCTF-2015 notsequence
キーは、2つのチェック機能であります
1署名されたINT __cdecl check1_80486CD(INT A1 []) 2 { 3 の符号付き整数の J。// [ESP + 0H] [EBP-14H] 4 int型の T。// [ESP + 4H] [EBP-10H] 5 int型 I; // [ESP + 8H] [EBP-章] 6 署名されたint型 K。// [ESP +章] [EBP-8H] K = 0、I = 0 [0] = 1 7 // K = 1、I = 1 [1] + [2] = 2 [1] = 1 A [2] = 1 8 // K = 2、I = 3 [3] + [4] + [5] = 4 9 // 。。[6] K = 3 I = 6 A + + + = 8 [7] [8] [9]。 10 11。 K = 0 ; 12である ため(I = 0 I <=; 1024 [I] && A1。 = K * I(k個の+ 1)/ 2)// 私は(1,2,3,4)と等差級数 13は { 14 T = 0 ; // 私は3 1 0 10 15 6(K増分を:. ) 15 のための(J = 0 J <= K; ++ J) 16 T = A1 + [J + I]; // INPUT [I]及び背面の数k 。17 IF(図1!<< K = T) // 2`k要== T - >和(入力[i]は、入力[I + K]) 18 リターン - 1。 // k個== 20 19 ++ K; 20 } 21 リターンK。 22 }
二次元構造に抽象化することができ、[K]の行(最初の行のk = 0)、最初のk *(K + 1)/ 2個、各行総和関数がCHECK1結果2 'を検出するための各行の先頭がありますK
CHECK2を見て
1署名されたINT __cdecl check2_8048783(INT A1 []、符号付き整数k_20) 2 { 3 int型 K。// [ESP + 10H] [EBP-10H] 4 int型の T。// [ESP + 14H] [EBP-Chの] 5は、 署名をint私; // [ESP + 18時間] [EBP-8H] 6 int型の J; // [ESP +代一] [EBP-4H] 7 8 J = 0 。 9 用(i = 1 ++ I; I <k_20) // i = 1,2,3 10 { 11 、T = 0 。 12 K = I - 1。 // K = 0,1,2,3 13 であれば(!A1 [I]) 14 リターン 0 。 15 一方(k_20 - 1 > K) // K×(K + 1)/ 2 0 1 3 6 10 16 { 17 T + = A1 [K×(K + 1)/ 2 + J]。 18 ++、K。 // J = 0、I = 1 [0] + [1] + [3] + [6] .... = [.. + 1] 19 // = 1、I = 2 [1 + 1] + [3 + 1] + [6 + 1] .... = [.. + 2] J 20 } 21 であれば(A1 [K×( K + 1)/ 2 + I] =!T) 22 リターン 0 。 23 ++ 、J。 24 } 25 リターン 1 。 26 }
[0] --- [K-1]ライン[J]カラム総和に等しい[K]の行として見ることができる[I]
実際には、2つの検証チェックは、パスカルの三角形であります
使用される特性(https://baike.baidu.com/item/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92/215098?fr=aladdin):
-
そして、数字のn行目には、2 ^(N-1)です。1 = 2 ^(1-1)、1 + 1 = 2 ^(2-1)、1 + 2 + 1 = 2 ^(3-1)、3 + 3 + 1 + 1 = 2 ^(4-1 )、1 + 4 + 6 + 4 + 1 = 2 ^(5-1)、1 + 5 + 10 + 10 + 5 + 1 = 2 ^(6-1)。
-
数字と左に等しい(左上から右斜線を低下させる)または右折をスラッシュ(左下右上から孵化)、隅の数字。1 + 2,1 + 1 = 1 + 1 + 1 = 3,1 + 4,1 + 1 + 1 = 2 + 3,1 = 6,1 = 2 + 3 + 2 + 3 + 4 = + 10,1 3 = 3 + 4,1 + 6 + 4 = 10、l = 5
WP:
1 DEF 三角形() 2 N = [1 ] 3 ながらTRUE: 4 収率N 5 N.append(0) 6 N = [N [I-1] + N [i]のための I における範囲(LEN(N) )] 7 N = 0 8 X = '' 9 のために T で三角形(): 10 #プリント(T) 11 X + = '' .join(マップ(STR、t))の 12 N = N + 1 13 であれば、N = = 20 : 14 休憩 15 インポートhashlib 16 M = hashlib.md5(x.encode())。hexdigest() 17 #プリント(X) 18 プリント(' RCTF { ' + M + ' } ')
RCTF {37894beff1c632010dd6d524aa9604db}