QPython-数学基础-乘法

    xiaoxiao2025-08-26  43

    任意自然数与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代码实现如下:

    #-*-coding:utf8;-*- #qpy:2 #qpy:console 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
    最新回复(0)