获取下一个完全对称日

前言

今日热点:20211202完全对称日。其实就是数学上的回文数,获取下一个完全对称日可以利用python的字符串切片判断即可。

代码

#!/usr/bin/python3
import time
now = int(time.time()) 
while (1):
    now  = now + 60*60*24
    timeStruct = time.localtime(now) 
    strTime = time.strftime("%Y%m%d", timeStruct)
    if strTime[::-1]==strTime:
        print('The next palindrome day:',strTime) #py timeR.py  --> The next palindrome day: 20300302
        break;

ycyin小于 1 分钟算法&数学Python
几道简单的CTF题目思路

前言

公司内部举行的小比赛,之前从未参与过此类比赛,所以各位看官大佬多多指教。简单来说就是给出题目从中找出flag就成功了,flag格式为flag{32位md5加密字符串}。感觉其中几道有点意思,记录一下!

hard-js

关于JS的一道题,主要是要分析js代码。从源码中可以看出flag的32位md5串每一位都可以推算出来:

<script>
	var check = document.getElementById('check')
	check.onclick = function() {
		var t = document.getElementById('flag').value;
		checkFlag(t) ? alert("Congratulations!!! Your flag is " + t) : alert("You need good good study~~")
	}
	function checkFlag(f) {
		l = []
		for (let i of f) {
			l.push(i.charCodeAt())
		}
		return (
			f.length === 38
			&& l[10] === 51
			&& sub(l[6], l[5]) === 1
			&& f.substring(37, 38) === '}'
			&& l[6] === l[7]
			&& mul(l[10], 2) === l[12]
			&& sub(l[9], l[8]) === 1
			&& l[7] === l[8]
			&& f.substring(0, 5) === 'flag{'
			&& div(l[9], 2) === sub(l[10], 1)  
			&& add(l[10], l[11]) === add(l[12], 6)
			&& btoa(f.substring(13, 21)) === "MDMzOGIwNmE="
			&& e_l(l.slice(21,29).reverse(), [48, 101, 52, 56, 56, 102, 102, 53])
			&& c(l.slice(29,37))
			)
	}
	function add(a, b) {
		return a+b
	}
	function sub(a, b) {
		return a-b
	}
	function mul(a, b) {
		return a*b
	}
	function div(a, b) {
		return Math.floor(a/b)
	}
	function xor(a, b) {
		return a^b
	}
	function e_l(a, b) {
		a.forEach((i,j)=>{
			if (i !== b[j]) {
				return false
			}
		})
		return true
	}
	function c(a){
		return 
		a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]==604 &&
		a[0]-a[1]-a[2]-a[3]-a[4]-a[5]-a[6]-a[7]==-406 &&
		a[1]+a[3]+a[5]+a[7]-a[6]-a[2]-a[0]-a[4]==6 &&
		a[0]+a[1]-a[2]-a[3]==-3 &&
		a[0]-a[1]+a[2]+a[3]==201 &&
		a[4]-a[5]+a[6]+a[7]==109 &&
		a[4]+a[5]-a[6]-a[7]==-1 &&
		a[1]+a[3]-a[5]*a[7]==-5394 &&
		a[0]+a[2]-a[4]*a[6]==-5145
	}
</script>

ycyin大约 10 分钟算法&数学CTFPythonJava
使用VBA脚本汇总Excel文档

效果展示

点击按钮前:

点击按钮后:

主要脚本内容

Private Sub CommandButton1_Click()
  Dim mypath As String
  Dim myExtension As String
  Dim myFiles As String
  Dim thisWb As Worksheet
  Dim wb As Workbook
  Dim I&, Rm&
  
  '设置一些属性
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual
  
  Set thisWb = ThisWorkbook.Worksheets(1) '当前工作簿
  
  mypath = ThisWorkbook.Path & "\data\" '指定文件夹路径
 
  myExtension = "*.xls"  '指定过滤的文件后缀
  
  myFiles = Dir(mypath & myExtension)  '所有指定后缀的文件

  '循环处理每一个文件
  Do While myFiles <> ""
  
     Set wb = Application.Workbooks.Open(Filename:=mypath & myFiles) '打开
     
    '确保工作簿被打开,在处理下一个文件时
     DoEvents
     
     
     Rm = Cells.Rows.Count  '当前活动工作表的行数
     With wb.Worksheets(1)
         For I = 2 To .Range("A" & Rm).End(3).Row  '←为1也表示xlToLeft,→为2也表示xlToRight,↑为3也表示xlUp,↓为4也表示xlDown
              .Rows(I).Copy thisWb.Range("A" & Rm).End(3).Offset(1)
         Next
            
     End With
  
     wb.Close 'SaveChanges:=True '保存工作簿
     '确保工作簿被关闭,在处理下一个文件时
     DoEvents
     '接着处理下一个
     myFiles = Dir
    
  Loop
  
  '恢复设置
  Application.EnableEvents = True
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
  
  MsgBox ("汇总完成!")
End Sub

ycyin大约 1 分钟算法&数学VBA
层次分析法(AHP)分析步骤与计算方法

层次分析法(Analytic Hierarchy Process,AHP)

是一种定性和定量相结合的、系统的、层次化的分析方法。这种方法的特点就是在对复杂决策问题的本质、影响因素及其内在关系等进行深入研究的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。是对难以完全定量的复杂系统做出决策的模型和方法。

层次分析法的原理,层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同的层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。


ycyin大约 10 分钟算法&数学AHP