本当の点数はエジプトの点数Pythoon 3に分解されます.

7700 ワード

真の点数はエジプトの点数に分解されます.
  • 真スコア:分子は分母
  • より小さいです.
  • エジプトスコア:分子数が1の真分数約束分数はa/b
  • と表されます.
    ただし、この二つのアルゴリズムは結果がすべて同じではないことに注意してください.
    Example:Input:8/11 Output:アルゴリズム1:1/2+1/5+1/371/4070アルゴリズム2:1/2+1/5+1/55+1/110
    基本的には、貧しい人
    1、イニシャルi=2、スコアはa/b 2、比較開始
  • if a=1,finish
  • if a/b>1/i:a/b=a/b-1/i,i=i+1,return 2
  • if a/b<1/i=i+1,return 2
  • # algorithm 1
    def egypt(a,b):
        if a==1:
            return [b]
        i=1
        B=[]
        while a!=1:
            i+=1
            if a/b > 1/i:
                a,b = a*i-b, b*i
                B.append(i)
        B.append(b)
        return B
    a,b=list(map(int,input().split('/')))
    res=egypt(a,b)
    res=['1/'+str(i) for i in res]
    print('+'.join(res))
    
    アルゴリズム二:改善
    1、初期化変数は各エジプトの点数の分母2、while aを保存するために使用されます.=1
  • if b%(a-1)=0:分母はb/(a-1)and b
  • である.
  • else:分母はb/a+1、分子分母if b%a=0、b=b/a、a=1
  • を更新します.
    # Algorithm 2
    a,b=list(map(int,input().split('/')))
    res=[]
    while a!=1:
        if b%(a-1)==0:
            res.append(b//(a-1))
            a=1
        else:
            q=b//a
            res.append(q+1)
            a = a-b%a
            b = b*(q+1)
            if b%a == 0:
                b = b//a
                a = 1
    res.append(b)
    res=['1/'+str(i) for i in res]
    print('+'.join(res))