Pagini recente » Cod sursa (job #2842281) | Cod sursa (job #2443775) | Cod sursa (job #1225015) | Cod sursa (job #1711800) | Cod sursa (job #2107409)
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
ifstream fin("string.in");
ofstream fout("string.out");
int n,logN;
string v;
int getLog(int x){
for(int i=30;i>=0;--i) if((1<<i)&x)
return i;
}
int form(int l){
int x = 0;
for(int i=0;i<l;++i){
x<<=1;
x+=int(v[i]-'a');
}
return x;
}
string transf(int x, int l){
string ans="";
for(int i=l-1;i>=0;--i)
ans.pb( char( ((1<<i)&x)!=0 )+'a');
return ans;
}
int getAns(int l){
int test = form(l), ans=0;
cout<<'\n'<<'\n'<<l<<'\n';
for(int i=0;i<=n-l && ans<=(1<<l)-1;++i){
cout<<i<<'\n';
test<<=1;
test+=int(v[i+l-1]-'a');
if(test>=(1<<l)) test-=(1<<l);
cout<<transf(test,l)<<" "<<transf(ans,l)<<'\n';
if(test==ans) ans++, i=-1;
}
return ans==(1<<l)?-1:ans;
}
int main()
{
fin>>n>>v;
int logN=getLog(n)+1;
for(int i=1;i<=logN;++i){
int ans = getAns(i);
if(ans!=-1){
fout<<i<<'\n'<<transf(ans, i)<<'\n';
//return 0;
}
}
return 0;
}