版权声明:布呗之路的守望者 https://blog.csdn.net/hypHuangYanPing/article/details/81876927
/**
HDU 6342 Problem K. Expression in Memories 模拟
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6342
题意 对于相应?填入相应的数字或四则运算符 使得该式子合法 模拟即可 坑很多 可自行tricks
*/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e3+7;
char s[maxn];
int vis[maxn];
int main(){
int t;scanf("%d",&t);
while(t--){
scanf("%s",s);
memset(vis,0,sizeof(vis));
int len=strlen(s),flag=1,now=0;
for(int i=0;i<len;i++){
if(s[i]=='?'){
if(i-1>=0&&s[i-1]=='0'&&vis[i-1]==1) s[i] = '+';
else s[i]='1';
}
else{
if(s[i]>='0'&&s[i]<='9'){}
else{
if(i-1>=0&&(s[i-1]=='*'||s[i-1]=='+')){
flag=0;
break;
}
}
}
if(s[i]=='0'&&now==0) vis[i]=1,now=1;
if(s[i]<'0'||s[i]>'9') now=0;
else now=1;
}
if(flag==0){
puts("IMPOSSIBLE");
continue;
}
for(int i=0;i<len;i++){
if(vis[i]==1){
if(i+1<len&&s[i+1]>='0'&&s[i+1]<='9'){
flag=0;
break;
}
}
if(s[i]=='+'||s[i]=='*'){
if(i-1>=0&&(s[i-1]=='*'||s[i-1]=='+')){
flag=0;
break;
}
if(i+1<len&&(s[i+1]=='*'||s[i+1]=='+')){
flag=0;
break;
}
}
}
if(s[0]=='*'||s[0]=='+'||s[len-1]=='*'||s[len-1]=='+') flag=0;
if(flag==0) puts("IMPOSSIBLE");
else printf("%s\n",s);
}
return 0;
}