RT
#include<bits/stdc++.h>
#define g() getchar()
#define il inline
#define eps 1e-10;
#define LL long long
#define pa pair<int, int>
#define for_1(i, n) for(int i = 1; i <= (n); ++i)
#define for_0(i, n) for(int i = 0; i < (n); ++i)
#define for_xy(i, x, y) for(int i = (x); i <= (y); ++i)
#define for_yx(i, x, y) for(int i = (x); i >= (y); --i)
#define for_edge(i, x) for(int i = head[x]; i; i = nxt[i])
#define int long long
// #define mid ((l + r) >> 1)
using namespace std;
const int N = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int mod = 1000000007;
const int up = 259;
inline int re()
{
int x = 0, p = 1;
char ch = getchar();
while(ch > '9' || ch < '0') {if(ch == '-') p = -1; ch = getchar();}
while(ch <= '9' and ch >= '0') {x = (x << 3) + (x << 1) + (ch ^ 48); ch = getchar();}
return x * p;
}
char S[N], s[N];
int n;
int qpow(int x, int k)//快速幂
{
int ans = 1;
while(k){
if(k & 1) ans = ans * x;
x = x * x;
k >>= 1;
}
return ans;
}
int calc(char *a, int l, int r)//中缀表达式求值
{
for(int i = r, j = 0; i >= l; --i)
{
if(a[i] == '(') j++;
if(a[i] == ')') j--;
if(j == 0 and a[i] == '+') return calc(a, l, i - 1) + calc(a, i + 1, r);
if(j == 0 and a[i] == '-') return calc(a, l, i - 1) - calc(a, i + 1, r);
}
for(int i = r, j = 0; i >= l; --i)
{
if(a[i] == '(') j++;
if(a[i] == ')') j--;
if(j == 0 and a[i] == '*') return calc(a, l, i - 1) * calc(a, i + 1, r);
if(j == 0 and a[i] == '/') return calc(a, l, i - 1) / calc(a, i + 1, r);
if(j == 0 and a[i] == '^') return qpow(calc(a, l, i - 1), calc(a, i + 1, r));
}
int ans = 0;
if(a[l] == '(' and a[r] == ')') return calc(a, l + 1, r - 1);
for(int i = l; i <= r; ++i)
ans = ans * 10 + (a[i] - '0');
return ans;
}
int get(char *a)//读入字串
{
int tot = 0;
char ch;
while(scanf("%c",&ch))
{
if(ch == '\n') break;
if(ch == ' ') continue;
if(ch == 'a')
{
a[tot++] = '1';
a[tot++] = '1';
a[tot++] = '4';
a[tot++] = '5';
a[tot++] = '1';
continue;
}
a[tot] = ch;
tot++;
}
return tot;
}
char p[N];
int cnt;
signed main()
{
int len1 = get(S);
int Ans = calc(S, 0, len1-1);
cout<<Ans<<endl;
n = re();
for(int i = 1; i <= n; ++i)
{
int len = get(s);
int ans = calc(s, 0, len-1);
if(ans == Ans)//比较,输入答案
{
p[cnt] = 'A' + i - 1;
cnt++;
}
}
cout<<p;
}
样例在luogu IDE 上也是T,本地能跑,疑惑半天。。