#26740: 幫幫QQ


zhengyouli547@gmail.com (hahaha)

學校 : 高雄市立高雄高級中學
編號 : 134898
來源 : [223.139.151.14]
最後登入時間 :
2021-09-19 15:23:51
c014. 10035 - Primary Arithmetic -- UVa10035 | From: [223.139.1.159] | 發表日期 : 2021-08-22 16:30

while True:

    a,b=input().split();ans=0;ggg=0    #ggg為進位次數

    if a+b=='00':

        break

    z=len(a);x=len(b)

    if len(a)>=len(b):

        t=len(b)

    else:

        t=len(a)                                   #t為最小測資長度

    if a=='0' or b == '0':

        print('No carry operation.')

        continue

    a='0'+a;b='0'+b                           #以免有類似 966 36 的情況

    for i in range(t,-1,-1):

        if int(a[i])+int(b[i])+ggg>=10:

            ans+=1

            ggg=(int(a[i])+int(b[i]))//10

        else:

            ggg=(int(a[i])+int(b[i]))//10

            continue

    if ans==0:

        print('No carry operation.')

    elif ans==1:

        print('1 carry operation.')

    else:

        print('%d carry operations.'%(ans))

 

謝謝!

 
#26743: Re:幫幫QQ


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
c014. 10035 - Primary Arithmetic -- UVa10035 | From: [39.11.200.251] | 發表日期 : 2021-08-22 19:46

while True:

    a,b=input().split();ans=0;ggg=0    #ggg為進位次數

    if a+b=='00':

        break

    z=len(a);x=len(b)

    if len(a)>=len(b):

        t=len(b)

    else:

        t=len(a)                                   #t為最小測資長度

    if a=='0' or b == '0':

        print('No carry operation.')

        continue

    a='0'+a;b='0'+b                           #以免有類似 966 36 的情況

    for i in range(t,-1,-1):

        if int(a[i])+int(b[i])+ggg>=10:

            ans+=1

            ggg=(int(a[i])+int(b[i]))//10

        else:

            ggg=(int(a[i])+int(b[i]))//10

            continue

    if ans==0:

        print('No carry operation.')

    elif ans==1:

        print('1 carry operation.')

    else:

        print('%d carry operations.'%(ans))

 

謝謝!

你的程式並沒有考慮到兩個數位數不同的情況,例如輸入"89 1"的時候,程式會把8和1相加,應該是要把9和1相加才對。你可以先使用zfill補0,讓兩個數的長度相同。

另外,ggg=(int(a[i])+int(b[i]))//10這裡也有問題,可以改成ggg=(int(a[i])+int(b[i])+ggg)//10。不過因為a[i],b[i]小於等於9,ggg不是0就是1,其實不用這麼麻煩

 
ZeroJudge Forum