2020暑期D1-F 思路+证明
主为自用,欢迎指正。

https://ac.nowcoder.com/acm/contest/5666/F

思路+证明:
a、b字符串可无限复制。若存在a、b可相等则输出‘=’,若不满足则判断‘>’&'<'。
字符串比较首先分等长与不等长,由于求的是存在,故若存在相等则必然等长。
(条件一,两无限字符串等长)
设len1=len(a),len2=len(b)
则令xlen1=ylen2,即求公倍数。(实际上可以写上最小,不过稍后证明内容包含,故这里扩大范围写成公倍数)
若xa==yb(a复制x次==b复制y次)
设x==y,则len1==len2,则a==b;
设x!=y,则len1!=len2,取len=len1+len2,
设,len1>len2,
因为xa=yb,则存在长度为len的相等字符串(不管是扩展再减小还是直接减小,必然存在).x*a中前len个字符组成的字符串a1,同理b1。
则前len2个a字符与前len2个b字符相等,a1[1]==b1[1],a1[1]=a1[len1+1],得,b1[1]=a1[len1+1]
同理,a1[len1+2]==b1[2]...直到a1[len1+len2]==b1[len2]
则前len2个字符串中,a1==b1==b,后len1个字符串中,a1=b1=a;
得,若存在a、b字符串存在相等得无限字符串,则必然a+b==b+a。
故亦可在此基础上作大小于的判断。

a[1] a[2] a[3] a[4] a[5] a[len1+1] a[len1+2] a[len2+3]
b[1] b[2] b[3] b[len2+1] b[len2+2] b[len2+3] b[len2+4] b[len2+5]
#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
typedef long long LL;

int main()
{
    string a,b;
    cin>>a>>b;
    string a1=a+b,b1=b+a;
    if(a1>b1)
        cout<<">";
    else if(a1<b1)
        cout<<"<";
    else 
        cout<<"=";
    cout<<endl;
}

简单图证
图片说明