清明節(jié)后,忽然有點(diǎn)小忙了令宿,刷題大業(yè)被無(wú)奈耽擱叼耙。
昨天,自家的服務(wù)器卡成翔粒没,一頓操作筛婉,空間和連接資源優(yōu)化一波,重啟服務(wù)癞松,呃爽撒,沒(méi)啥效果。响蓉。硕勿。。枫甲。
驀然發(fā)現(xiàn)有倆破JOB居然跑了兩三天源武!
無(wú)奈打開(kāi)系統(tǒng)資源管理監(jiān)控,IO個(gè)位數(shù)M/s,磁盤一直是100%最長(zhǎng)活動(dòng)時(shí)間 想幻,什么鬼粱栖?IO這么低,磁盤君掛了嗎脏毯?闹究?
最終只能祭出終極殺招:磁盤碎片整理,JOB殺掉食店。
看到IO上去了渣淤,占用下來(lái)了赏寇。嘆口氣,開(kāi)始刷題
1价认、題目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1006
2蹋订、思路:加密,解密刻伊。按照加密規(guī)則推導(dǎo)下露戒,然后基本就能知道反向操作的規(guī)則并推導(dǎo)出公式了。正向推導(dǎo)的作用是更好地理解規(guī)則捶箱,找出其中需要注意的點(diǎn) 智什,比如,公式中 plaincode[k*i % n] - i 一定是小于28的丁屎,因?yàn)閜laincode[]最大也就是plaincode['.'] = 27荠锭,但是plaincode[k*i % n] - i? 會(huì)出現(xiàn)負(fù)數(shù)的情況,所以得到兩種情況的公式:
if plaincode[k*i % n] - i >= 0 then plaincode[k*i % n] = ciphercode[i] + i
if plaincode[k*i % n] - i < 0 then plaincode[k*i % n] = ciphercode[i] + i - 28
合并一下晨川,就是 :plaincode[k*i % n] = (ciphercode[i] + i)%28
剩下就是按照規(guī)則步驟反向操作了
ciphertext -> ciphercode -> plaincode -> plaintext
3证九、我的解答:
代碼部分接受多行輸入還未實(shí)現(xiàn),有時(shí)間再調(diào)試共虑,目前主要目標(biāo)在算法