解題思路:
模擬出每乙個進製形成的字串然後kmp就可以了!
好像用string直接find也行
#include#include#include#include#include#includeusing namespace std;
const int maxn = 1000005;
char t[maxn];
char s[maxn];
vectorv;
int k;
/*next的含義: x[i-next[i]...i-1] = x[0...next[i]-1]
即,從i-next[i]到i-1這一段距離的字串與從0到next[i]-1這一段字串相等
next[i]就是以i為字尾的所有字串與整個字串的最長公共字首長度
next[i]滿足x[i-z...i-1] = x[0...z-1]的z的最大值
0 1 2 3 4 5 6 7 8
a b c d a b c a b
-1 0 0 0 0 1 2 3 1
*/void kmp_pre(char x, int m, int next)
}// cout <
}// s[++cnt]='\n';
// cout <
if(kmp_count(t+1,len,s+1,cnt))
}if(flag)
printf("yes\n");
else
printf("no\n");
return 0;
}
牛客網 子串計算
題目描述 給出乙個01字串 長度不超過100 求其每乙個子串出現的次數。輸入描述 輸入包含多行,每行乙個字串。輸出描述 對每個字串,輸出它所有出現次數在1次以上的子串和這個子串出現的次數,輸出按字典序排序。樣例輸入 10101 樣例輸出 0 2 01 2 1 3 10 2 101 2 思路分析 in...
牛客網子段乘積
新增鏈結描述 include using namespace std typedef long long ll const int mod 998244353 ll quick ll a,ll b 快速冪 快速冪的迭 法 return ret 1 初始令ans 1,用來存放累積的結果。2 判斷b的二...
牛客網 數串
設有n個正整數,將他們連線成一排,組成乙個最大的多位整數。如 n 3時,3個整數13,312,343,連成的最大整數為34331213。如 n 4時,4個整數7,13,4,246連線成的最大整數為7424613。有多組測試樣例,每組測試樣例包含兩行,第一行為乙個整數n n 100 第二行包含n個數 ...