救命,只过了第一个
  • 板块学术版
  • 楼主江小白芜湖
  • 当前回复8
  • 已保存回复8
  • 发布时间2021/10/16 19:42
  • 上次更新2023/11/4 03:35:38
查看原帖
救命,只过了第一个
542068
江小白芜湖楼主2021/10/16 19:42

#取10007余 numb=10007 L=int(input()) s=input() #求后缀表达式 #$优先级 first={'+':1,'*':2} #‘常’数项(后压) s1=[] #符号 s2=[] a=True for i in s: n=True if i =='(': a=False s2.append(i) elif i ==')': now=0 while now !='(': now=s2.pop() if now=='(': break

        s1.append(now)
    a=True
else :
    if a==False:
        if s2[-1] !='(':

            while True:
                now=s2.pop()
                if now =='(':
                    s2.append(now)
                    break
                if first[now]<first[i]:
                    s2.append(now)
                    s2.append(i)
                    break
                else:
                    s1.append(now)
        else:
            s2.append(i)
    else:
        if s2==[]:
            s2.append(i)
        else:
            while s2:
                now=s2.pop()
                if first[now]<first[i]:
                    s2.append(now)
                    s2.append(i)
                    n=False
                    break
                else:
                     s1.append(now)
            if  n==True:
                s2.append(i)

while s2: now=s2.pop() s1.append(now)

'''后缀表达式为s1''' #开整 ans_0=[1] ans_1=[1] for i in s: if i =='(' or i==')': pass else: ans_0.append(1) ans_1.append(1) '''后缀表达式为li''' li=s1 i=0 for now in li:

if now=='+':
    ans_1[0]=ans_1[0]*ans_1[1]+ans_1[0]*ans_0[1]+ans_1[1]*ans_0[0]
    (ans_1[0])%=numb
    ans_1.pop(1)
    ans_0[0]=ans_0[0]*ans_0[1]
    (ans_0[0])%=numb
    ans_0.pop(1)
elif now=='*':

    if i ==len(li)-1:
        ans_0[0]=ans_0[0]*ans_0[1]+ans_1[0]*ans_0[1]+ans_1[1]*ans_0[0]
        (ans_0[0])%=numb
        ans_0.pop(1)
        ans_1[0]=ans_1[0]*ans_1[1]
        (ans_1[0])%=numb
        ans_1.pop(1)
    else:
        if li[i+1] != '+':
            ans_0[0]=ans_0[0]*ans_0[1]+ans_1[0]*ans_0[1]+ans_1[1]*ans_0[0]
            (ans_0[0])%=numb
            ans_0.pop(1)
            ans_1[0]=ans_1[0]*ans_1[1]
            (ans_1[0])%=numb
            ans_1.pop(1)
        else:
            ans_0[-1]=ans_0[-1]*ans_0[-2]+ans_1[-1]*ans_0[-2]+ans_1[-2]*ans_0[-1]
            (ans_0[-1])%=numb
            ans_0.pop(-2)
            ans_1[-1]=ans_1[-1]*ans_1[-2]
            (ans_1[-1])%=numb
            ans_1.pop(-2)
i+=1

print(ans_0[0])

2021/10/16 19:42
加载中...