Python 更长的执行时间

Python 更长的执行时间,python,python-3.x,Python,Python 3.x,下面的代码在执行较大的输入(如x=23)时花费的时间过长!!!!y=5!!!!!。代码的输出应该是x和y之间的比较。关于输入的小例子是,如果输入为3!!,这意味着(3!))=6! = 720. def large() t=int(输入()) i=0 事实_str=“” 事实_stry=“” res,resy=1,1 计数器=0 反Y=0 而(i0: 对于范围(res-1,0,-1)中的num: res=res*num 其他: 事实真相=真相(事实真相) 事实真相=事实真相+字符 对于chary

下面的代码在执行较大的输入(如x=23)时花费的时间过长!!!!y=5!!!!!。代码的输出应该是x和y之间的比较。关于输入的小例子是,如果输入为3!!,这意味着(3!))=6! = 720.

def large()

t=int(输入())
i=0
事实_str=“”
事实_stry=“”
res,resy=1,1
计数器=0
反Y=0
而(i0:
对于范围(res-1,0,-1)中的num:
res=res*num
其他:
事实真相=真相(事实真相)
事实真相=事实真相+字符
对于chary in y:
如果chary=='!'和countery==0:
事实=int(事实)
对于数值范围内的数值(事实值,0,-1):
resy=resy*numy
计数器Y=计数器Y+1
elif计数器Y>0:
对于范围内的num(resy-1,0,-1):
resy=resy*numy
其他:
打印(“在esle”,resy)
事实=str(事实)
事实=事实+谨慎
如果len(str(x))==len(str(fact_str)):
事实真相=int(事实真相)
x=事实
其他:
x=res
如果len(str(y))==len(str(事实)):
事实=int(事实)
y=事实
其他:
y=res
x=int(x)
y=int(y)
如果x==y:
打印(“x=y”)
如果x>y:
打印(“x>y”)
其他:

印刷品(“xIsn't 23!!!!真的真的很大吗?比如”不能存储在任何物理计算机的内存中,即使它是由可观测宇宙中的每个原子制成的"大?我必须同意凯文的观点,你必须意识到任何比双阶乘更大的东西都会有多大…比如试着想想23!!等于什么,然后试着概念化再加上3!在这个序列上…假设x和y只能是一个数字序列,后面跟一个或多个感叹号,也许你可以合作uld从两侧放置“!”s,直到其中一个没有。例如,
23<5!
意味着
23!!!!<5!!!
除了是否有任何数字太大之外,我甚至不确定该代码是否适用于小输入。(例如,
y=res
行看起来可疑。)至少,你需要发布你的实际代码,这样我们就可以尝试重现你的结果。我做了一个非常简单的算法,可以在很短的时间内解出
23!!!!<5!!!
。关键是取消不必要的阶乘;然后逐渐计算出更多
s的剩余产品,并将它们与t进行比较如果乘积大于常量表达式,则可以退出循环。
t = int(input())    
i = 0
fact_str = ""
fact_stry = ""
res, resy = 1, 1    
counter = 0
countery = 0
while(i < t):
    x = input()
    y = input()             
    for char in x:          
        if char == '!' and counter == 0:                
            fact_str = int(fact_str)
            for num in range(fact_str, 0, -1):
                res = res * num
            counter = counter + 1
        elif counter > 0:               
            for num in range(res-1, 0, -1):                 
                res = res * num
        else:
            fact_str = str(fact_str)                                
            fact_str = fact_str + char              
    for chary in y:         
        if chary == '!' and countery == 0:              
            fact_stry = int(fact_stry)
            for numy in range(fact_stry, 0, -1):
                resy = resy * numy
            countery = countery + 1
        elif countery > 0:              
            for num in range(resy-1, 0, -1):                    
                resy = resy * numy
        else:   
            print("at esle", resy)  
            fact_stry = str(fact_stry)      
            fact_stry = fact_stry + chary               
        if len(str(x)) == len(str(fact_str)):
            fact_str = int(fact_str)
            x = fact_str
        else:
            x = res
        if len(str(y)) == len(str(fact_stry)):
            fact_stry = int(fact_stry)
            y = fact_stry
        else:
            y = res
    x = int(x)
    y = int(y)
    if x == y:
        print("x=y")
    elif x > y:
        print("x>y")
    else:
        print("x<y")
    i = i + 1