1077 Kuchiguse (20 分)

一眼二分。

注意点:

  1. 在读入n之后要使用getchar接收后面的换行符,否则会使for循环内的getline读入这个换行符,导致第一个字符串读取错误。
  2. 最后输出答案前要先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;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14401573.html