一眼二分。
注意点:
- 在读入n之后要使用getchar接收后面的换行符,否则会使for循环内的getline读入这个换行符,导致第一个字符串读取错误。
- 最后输出答案前要先check一遍
const int N=110;
string a[N];
string suffix;
int n;
bool check(int mid)
{
suffix=a[0].substr(a[0].size()-mid);
for(int i=1;i<n;i++)
if(a[i].substr(a[i].size()-mid) != suffix)
return false;
return true;
}
int main()
{
cin>>n;
cin.ignore();
int l=0,r=256;
for(int i=0;i<n;i++)
{
getline(cin,a[i]);
r=min(r,(int)a[i].size());
}
while(l<r)
{
int mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
if(l == 0) puts("nai");
else
{
check(l);
cout<<suffix<<endl;
}
//system("pause");
return 0;
}