信息
- ID
- 69
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 54
- 已通过
- 49
- 上传者
C++ :
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
char str1[N<<1],str2[N<<1];
int n;
int get_min(char *s)
{
int i=0,j=1;
while(i<n&&j<n)
{
int k=0;
while(s[i+k]==s[j+k]&&k<n) k++;
if(k==n) break;
if(s[i+k]<s[j+k]) j+=k+1;
else i+=k+1;
if(i==j) i++;
}
return min(i,j);
}
int main()
{
cin>>str1>>str2;
n=strlen(str1);
memcpy(str1+n,str1,n);
memcpy(str2+n,str2,n);
int s1=get_min(str1);
int s2=get_min(str2);
str1[s1+n]='\0';
str2[s2+n]='\0';
if(!strcmp(str1+s1,str2+s2))
cout<<"Yes"<<endl<<str1+s1<<endl;
else
cout<<"No"<<endl;
return 0;
}