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 上所有邊權乘積為完全平方數的路徑有多少條 看到 所有邊權乘積為完全平方數 想到完全平方數的特殊性 就是分解質因數後 質因數指數都為偶數 然後就想到分解邊權質因數 判質路徑邊權奇偶性 後者由於...