快速判斷長度為\(x\)的串是不是迴圈節,只需要判斷\(len-x\)的串是否為區間的border。
雜湊處理。
注意到如果\(x\)不是迴圈節,則它的因數都不會是迴圈節。
所以可以列舉\(x\)的質因子,長度除以質因子之後判斷是不是,直到不是迴圈節為止,這樣就可以得知最短迴圈節的這個質因子的指數。
using namespace std;
#include #include #include #define n 500010
#define ll long long
int n,m;
char s[n];
const int mo1=1000000007;
const int mo2=1000000009;
ll pw1[n],pw2[n],p1[n],p2[n];
void init()
for (int i=1;i<=n;++i)
}bool eql(int x,int y,int len)
bool judge(int l,int r,int len)
int p[n],np;
bool inp[n];
int mnp[n];
int main()
} for (int i=1;i<=m;++i)
printf("%d\n",ans);
} return 0;
}
簡單密碼破譯
problem description 密碼是我們生活中非常重要的東東,我們的那麼一點不能說的秘密就全靠它了。哇哈哈.接下來淵子要在密碼之上再加一套密碼,雖然簡單但也安全。假設淵子原來乙個bbs上的密碼為zvbo941987,為了方便記憶,他通過一種演算法把這個密碼變換成yuanzi1987,這個密...
python 破譯密碼
題目內容 a國情報局抓獲敵國間諜一名,從間諜身上搜出了若干密電,在嚴刑逼供之下,間諜說出了密電加密方法 將明文電報 僅由大寫字母構成 中的所有字母均替換為字母表中向後看的第n個字母,如果超過z,則從a繼續數,這樣就得到了密文,比如attack,向後看第2個字母,就加密為cvvcfm。可還沒等到間諜說...
bzoj 5043 密碼破譯
求乙個最小的數,它和一串數的異或值的和 m。orz claris f i j 表示i位前 後面的先砍掉,不理,方便轉移 j m的i位前。那麼當j 0或j n時是一定無解的,因為後面的位至多補 n 1 2i所以隨便轉移一下就好了。關鍵是狀態表示,還是太菜了。code include include i...