3977 密碼破譯

2022-05-31 16:51:09 字數 736 閱讀 5984

快速判斷長度為\(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...