任意自然数与11相乘求解:
思路:
任意自然数,如下四位数abcd, abcd * 11经过3步得出答案:
1. a b c d留足够空隙
2. 填值: a a+b b+c c+d d
3. 计算各个位结果>9,则进位
如: 998 * 11
第一步: 9 9 8
第二步: 9 9+9 9+8 8
第三步: 10 9 7 8
得出结果:10978为所求.
Python代码实现如下:
import copy
def mutiply11(n):
lenNum = len(n)
totalBit = lenNum +
1
stepInNum = [
0] * totalBit
eachBit = [
0] * totalBit
for i
in range(totalBit):
if 0<i<lenNum:
thisBit = int(n[i-
1]) + int(n[i])
if thisBit >
9:
stepInNum[i] = thisBit //
10
thisBit %=
10
else:
ti = i
if i >
0:
ti = lenNum -
1
thisBit = int(n[ti])
eachBit[i] = thisBit
print "eachBit : ",eachBit
print "stepInNum : ",stepInNum
eachBit.reverse()
stepInNum.reverse()
for p
in range(
1,totalBit):
temp = eachBit[p] + stepInNum[p-
1]
if temp >
9 and p != totalBit -
1:
stepInNum[p] += temp //
10
temp %=
10
eachBit[p] = temp
eachBit.reverse()
stepInNum.reverse()
result =
''.join(str(e)
for e
in eachBit)
print '你输入的数字乘以11的结果是:',result
while(
True):
num = raw_input(
'Enter your num: ')
if num ==
'886':
print '再见'
break
mutiply11(num)
转载请注明原文地址: https://ju.6miu.com/read-1302018.html