UOJ 74 UR 6 破解密碼

2022-03-19 20:28:06 字數 645 閱讀 3580

uoj

發現這個過程是乙個字串雜湊的過程。

把第一位單獨拿出來考慮,假設這個串是\(p+s\),旋轉後變成了\(s+p\)。

其雜湊值分別是:\(p*26^+hash(s)\)和\(hash(s)*26+p\)。

那麼\(h[i]*26-h[i+1]=p*26^-p\)

那麼這裡顯然可以直接把\(p\)給解出來。

這樣子就可以還原出每一位了。

注意到特殊情況:\(26^n-1\)沒有逆,此時無法直接計算。

然而注意到\(26^n=1\),所以得到右邊是\(0\)

此時\(h[i]*26=h[i+1]\),此時和\(p\)無關了,所以任意乙個能滿足\(h[0]\)的串都是合法的。

那麼直接把\(h[0]26\)進製分解就行啦。

#include#includeusing namespace std;

#define max 100100

inline int read()

int n,mod,h[max],a[max];

int fpow(int a,int b)return s;}

int main()

puts("");

return 0;

}

UOJ 74 UR 6 破解密碼

題目中,將字串 s 的第乙個字元移到末尾,其他字元向前移動乙個位置,f s 就從 hi 變成了 hi 1。我們分析一下這個過程 假設第乙個字元為 c,hi 26 n 1 c 26 c hi 1 26 hi hi 1 26 n 1 c c 26 hi hi 1 inv 26 n 1 那麼每乙個 c 都...

UOJ 74 UR 6 破解密碼(數學相關)

傳送門 其實這道題就是給了你乙個串的n個hash值然後讓你還原原串 首先乙個非常顯然的式子 h i 1 h i c i 26n 1 26 c i modp 然後化簡一下 c i h i 1 h i 1 26n這樣就可以根據h來推出c了 可是這樣還有乙個問題 考慮26n 1 modp 的情況,此時若h...

UOJ 192 UR 14 最強跳蚤

題目鏈結 暑期課第二天 樹上問題高階 具體內容看筆記部落格吧 題意n個節點的樹t 邊有邊權w 求滿足 u,v 上所有邊權乘積為完全平方數的路徑有多少條 看到 所有邊權乘積為完全平方數 想到完全平方數的特殊性 就是分解質因數後 質因數指數都為偶數 然後就想到分解邊權質因數 判質路徑邊權奇偶性 後者由於...