3096:Surprising Strings

keyword

シミュレーション 文字列 C++

概要

文字列が与えられたとき、任意のkに対してk字置きのcharのペアが全て異なっているかどうかを判定する問題。文字列の長さは80以下。
文字列が短いので愚直に試せば良い。書くだけ。

int main(){
    string str;
    int i, j, n, cnt;

    while(cin>>str){
        if(str=="*") break;
        n = SZ(str);
        for(i=1;i<n;i++){
            cnt = 0;
            set< pair<char, char> > ss;
            for(j=0;j+i<n;j++){
                ss.insert(MP(str[j], str[j+i]));
                cnt++;
            }
            if(cnt != SZ(ss)) break;
        }
        if(i==n) printf("%s is surprising.\n", str.c_str());
        else printf("%s is NOT surprising.\n", str.c_str());
    }

    return 0;
}