給出乙個正整數n,我們把1…n在k進製下的表示連起來記為s(n,k),例如s(16,16)=123456789abcdef10, s(5,2)=11011100101。現在對於給定的n和字串t,我們想知道是否存在乙個k(2 ≤ k ≤ 16),使得t是s(n,k)的子串。
第一行乙個整數n(1 ≤ n ≤ 50,000)。
第二行乙個字串t(長度 ≤ 1,000,000)
"yes"表示存在滿足條件的k,否則輸出"no"
8
01112
yes
先用暴力求出s,然後用kmp進行字串匹配。
#include#include#includeusing namespace std;
typedef unsigned long long ull;
const ull b=100000007;
string t;
int next[1000005];
int n;
bool kmp(string a,string b)
string numtostring(int a,int b)
return s;
}void makenext()
} if(flag)
printf("yes\n");
else
printf("no\n");
return 0;
}
KMP 牛客 NC13253 子串
題目描述 給出乙個正整數n,我們把1 n在k進製下的表示連起來記為s n,k 例如s 16,16 123456789abcdef10,s 5,2 11011100101。現在對於給定的n和字串t,我們想知道是否存在乙個k 2 k 16 使得t是s n,k 的子串。輸入描述 第一行乙個整數n 1 n ...
牛客網 子串
解題思路 模擬出每乙個進製形成的字串然後kmp就可以了!好像用string直接find也行 include include include include include includeusing namespace std const int maxn 1000005 char t maxn ch...
牛客題霸 最長公共子串
題目描述 給定兩個字串str1和str2,輸出兩個字串的最長公共子串,如果最長公共子串為空,輸出 1。示例1輸入 1ab2345cd 12345ef 返回值 2345 python longest common substring param str1 string字串 the string par...