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; }