HDU 6342

#include <bits/stdc++.h>
using namespace std;
char s[5001];

int main()
{
    int t,n,m;
    scanf("%d",&t);
    while(t--) 
    {
        scanf("%s",s);
        int len=strlen(s),i;
        
        for( i=0;i<len;i++)
           {
               if(len==1&&s[0]=='0'){
               printf("0\n");
               break;
               }
                   int j=i;
                  while(j<len)
                  {
                      if(s[j]=='+')break;
                      if(s[j]=='*')break;
                      if(s[j]=='0')break;
                      j++;
                }
                  
                  if(j==len)
                  {
                      for(int j=i;j<len;j++)
                         if(s[j]=='?')s[j]='1';
                         
                         printf("%s\n",s);
                         break;
                  }
                  
                  if((s[j]=='*'||s[j]=='+'))
                   if(j==0||(j>0&&(s[j-1]=='*'||s[j-1]=='+'))||(s[j+1]=='\0'||s[j+1]=='*'||s[j+1]=='+'))
                  {printf("IMPOSSIBLE\n");break;}
                  
                  if(j>0&&s[j]=='0'&&(s[j-1]=='?'||(s[j-1]>'0'&&s[j-1]<='9')))
                  {
                      if(s[j-1]=='?')s[j-1]='1';
                      if(s[j+1]=='?'&&(s[j+2]=='*'||s[j+2]=='+'))s[j+1]='1';
                  }
                  
                  if(s[j]=='0')
                  {
                        
                     if(s[j+1]=='?'&&s[j+2]=='0'&&s[j-1]>'0'&&s[j-1]<='9')s[j+1]='1';
                  
                        if((s[j-1]<'0'||s[j-1]>'9')&&s[j+1]=='0'){printf("IMPOSSIBLE\n");break;}
                       if((s[j-1]=='+'||s[j-1]=='*'||j==0)&&s[j+1]=='?'&&s[j+2]=='0')s[j+1]='+';
                       if((s[j-1]<'0'||s[j-1]>'9')&&(s[j+1]>'0'&&s[j+1]<='9')){printf("IMPOSSIBLE\n");break;}
                       if((j==0||s[j-1]<'0'||s[j-1]>'9')&&s[j+1]=='?'&&(s[j+2]=='*'||s[j+2]=='+'||(j+2)>=len)){printf("IMPOSSIBLE\n");break;}
                       if(s[j+1]=='?'&&s[j+2]=='?')
                       {s[j+1]='+'; s[j+2]='1';}
                       if((s[j-1]<'0'||s[j-1]>'9')&&s[j+1]=='?'&&(s[j+2]>'0'&&s[j+2]<='9'))
                       s[j+1]='+';
               }
               if(s[i]=='?')s[i]='1';
           }
           if(i==len)printf("%s\n",s);
    }
    return 0;
} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wym_king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值