HDU 2203--親和串【水題】

1133 ワード

親和串
Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8931    Accepted Submission(s): 4062
Problem Description
人は年を取るにつれて賢くなるか、それとも大きくなるにつれて愚かになるか、これは世界の科学者が考える価値のある問題であり、同じ問題Eddyもずっと考えていた.彼は小さい頃から親和串がどのように判断したか知っていたからだ.しかし、今大きくなっても親和串をどのように判断するか分からないことに気づいた.そこで彼はもう一度聡明で人を助けるのが好きなあなたにこの問題を解決するように教えてもらうしかなかった.
親和列の定義は、2つの文字列s 1およびs 2が与えられ、s 1サイクルシフトによってs 2をs 1に含めることができれば、s 2はs 1の親和列であるということである.
 
Input
この問題には複数のテストデータがあり、各データの第1行には入力文字列s 1が含まれ、第2行には入力文字列s 2が含まれ、s 1とs 2の長さはいずれも100000未満である.
 
Output
s 2がs 1の親和列である場合、「yes」が出力され、逆に「no」が出力される.各テストの出力は1行を占めます.
 
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
#define maxn 100010
int main (){
    char s1[maxn],s2[maxn],s3[maxn];
    while(cin>>s1){
        cin>>s2;
        strcpy(s3,s1);
        strcat(s1,s3);
        if(strstr(s1,s2)!=NULL)
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;
    }
    return 0;
}