回文数之一(大概)
若一個數(shù)(首位不為0)從左到右讀與從右到左讀都是一樣,這個數(shù)就叫做回文數(shù),例如12521就是一個回文數(shù)。
給定一個正整數(shù),把它的每一個位上的數(shù)字倒過來排列組成一個新數(shù),然后與原數(shù)相加,如果是回文數(shù)則停止,如果不是,則重復(fù)這個操作,直到和為回文數(shù)為止。給定的數(shù)本身不為回文數(shù)。
例如:87則有:
STEP1: 87+78=165
STEP2: 165+561=726
STEP3: 726+627=1353
STEP4: 1353+3531=4884
現(xiàn)在給你一個正整數(shù)M(12 <= M <= 100),輸出最少經(jīng)過幾步可以得到回文數(shù)。如果在8步以內(nèi)(含8步)不可能得到回文數(shù),則輸出0。
例如:M=87,則輸出4.
好了超簡單的一個題。。。
沒有啥優(yōu)化的,我就直接寫了。
用字符串類型比較,來回轉(zhuǎn)換類型。。。 # -*- coding: UTF-8 -*- M = 87 str1 = '' str1 = str(M) i, f = 1, 1 while i <= 8:N = int(str1) + int(str1[::-1])#把字符轉(zhuǎn)成整形相加str0 = str(N)if str0[:len(str0)+1] == str0[len(str0)::-1]:#直接切片比較是否相同print if = 0breakelse:i += 1str1 = str0 if f == 1:print '0'
好了超簡單的一個題。。。
沒有啥優(yōu)化的,我就直接寫了。
用字符串類型比較,來回轉(zhuǎn)換類型。。。 # -*- coding: UTF-8 -*- M = 87 str1 = '' str1 = str(M) i, f = 1, 1 while i <= 8:N = int(str1) + int(str1[::-1])#把字符轉(zhuǎn)成整形相加str0 = str(N)if str0[:len(str0)+1] == str0[len(str0)::-1]:#直接切片比較是否相同print if = 0breakelse:i += 1str1 = str0 if f == 1:print '0'
?
轉(zhuǎn)載于:https://www.cnblogs.com/webgavin/p/5329728.html
總結(jié)
- 上一篇: 【第四周作业】参加项目开发之后的一些体会
- 下一篇: 需求更大的--if条件判断