全部TLE(真的很玄学)。
#include<bits/stdc++.h>
using namespace std;
char yuan[60],hou[30][60];
char b[30][60],s[60];
bool vis[30];
void zhongtohou(char a[],int v){
int i=0,j=-1,t=0;
while(a[i]!='@'){
if(a[i]=='a'){
b[v][++j]=a[i];
b[v][++j]='.';
i++;
}
if(a[i]>='0' && a[i]<='9'){
while(a[i]>='0' && a[i]<='9'){
b[v][++j]=a[i];
i++;
}
b[v][++j]='.';
}
if(a[i]=='('){
s[++t]=a[i];
i++;
}
if(a[i]=='+'||a[i]=='-'){
if(t>0){
while(s[t]!='(' && t>0){
b[v][++j]=s[t];
t--;
}
}
s[++t]=a[i];
i++;
}
if(a[i]=='*'||a[i]=='/'){
if(t>0){
while((s[t]=='*'||s[t]=='/'||s[t]=='^')&& t>0){
b[v][++j]=s[t];
t--;
}
}
s[++t]=a[i];
i++;
}
if(a[i]=='^'){
s[++t]=a[i];
i++;
}
if(a[i]==')'){
while(s[t]!='(' && t>0){
b[v][++j]=s[t];
t--;
}
if(t>0) t--;
i++;
}
}
while(t>0){
b[v][++j]=s[t];
t--;
}
}
int jisuan(int u,int adz){
char a[100];
int i=0,j=0;
strcat(b[u],"@");
while(b[u][i]!='@'){
if(b[u][i]=='a'){
a[++j]=adz;
i+=2;
}
if(b[u][i]>='0' && b[u][i]<='9'){
int w=0;
while(b[u][i]>='0' && b[u][i]<='9'){
w=(w<<1)+(w<<3)+b[u][i]-'0';
i++;
}
i++;
a[++j]=w;
}
while(b[u][i]=='*'||b[u][i]=='/'||b[u][i]=='+'||b[u][i]=='-'||b[u][i]=='^'){
j--;
if(b[u][i]=='+') a[j]+=a[j+1];
else if(b[u][i]=='*') a[j]*=a[j+1];
else if(b[u][i]=='-') a[j]-=a[j+1];
else if(b[u][i]=='/') a[j]/=a[j+1];
else{
for(int e=1;e<a[j+1];e++){
a[j]*=a[j];
}
}
i++;
}
}
return a[1];
}
void read(char x[]){
int cnt=-1;
string tmp;
getline(cin,tmp);
for(int i=0;i<tmp.size();i++){
if(tmp[i]==' ') continue;
else x[++cnt]=tmp[i];
}
strcat(x,"@");
}
int main(){
int n;
read(yuan);
zhongtohou(yuan,0);
scanf("%d\n",&n);
for(int i=1;i<=n;i++){
read(hou[i]);
zhongtohou(hou[i],i);
}
for(int j=-3;j<=3;j++){
int z=jisuan(0,j);
for(int i=1;i<=n;i++){
if(!vis[i]){
int k=jisuan(i,j);
if(k!=z) vis[i]=1;
}
}
}
for(int i=1;i<=n;i++){
if(!vis[i]) cout<<char(i-1+'A');
}
return 0;
}