分情况讨论,构造很简单
#include<bits/stdc++.h> using namespace std; #define N 200005 char s[10],t[10]; int n,s1,s2,t1,t2; int calc(int a,int b,int c){ if(a==b || a==c || b==c)return 0; if(a==s1 && b==s2)return 0; if(b==s1 && c==s2)return 0; if(n>1)if(c==s1 && a==s2)return 0; if(a==t1 && b==t2)return 0; if(b==t1 && c==t2)return 0; if(n>1)if(c==t1 && a==t2)return 0; puts("YES"); for(int i=1;i<=n;i++) cout<<(char)(a+'a'-1)<<(char)(b+'a'-1)<<(char)(c+'a'-1); } int calc1(int a,int b,int c){ if(a==b || a==c || b==c)return 0; if(a==s1 && b==s2)return 0; if(b==s1 && c==s2)return 0; if(a==t1 && b==t2)return 0; if(b==t1 && c==t2)return 0; puts("YES"); for(int i=1;i<=n;i++) cout<<(char)(a+'a'-1); for(int i=1;i<=n;i++) cout<<(char)(b+'a'-1); for(int i=1;i<=n;i++) cout<<(char)(c+'a'-1); return 1; } int main(){ cin>>n; cin>>s>>t; s1=s[0]-'a'+1,s2=s[1]-'a'+1; t1=t[0]-'a'+1,t2=t[1]-'a'+1; for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) for(int k=1;k<=3;k++) if(calc(i,j,k))return 0; if(s1!=s2 && t1!=t2){ for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) for(int k=1;k<=3;k++) if(calc1(i,j,k))return 0; } puts("NO"); }