除式还原

除式还原问题描述:给定下列除式,其中包含5个7,其他打X的是任意数字,请加以还原

问题描述:

给定下列除式,其中包含5个7,其他打X的是任意数字,请加以还原。
                      X  7  X  ————-商
                   ―――――――――――――――――――――
  除数—– X X  √  X  X  X  X  X  ———-被除数
                      x  7 7
                    —————-
                      X 7 X
                      X 7 X
                     —————-
                          X X
                          X X
                     —————-
                            0


这个程序我没有什么好的思路,所以也不会写,能把示例代码看懂就行了!


示例代码:

def findHead():    for x in xrange(10, 100):       for y in xrange(1, 10):          if str(x * y)[1:] == '77' and str(x * 7)[1] == '7':             return x, y, x*y, x*7 def findTail(x):    for y in xrange(1, 10):       if x*y < 100:          return y, x*y def main():    chu, shang1, ji1, ji2 = findHead()    shang3, ji3 = findTail(chu)    res = ji3 + ji2 * 10 + ji1 * 100    return res, chu, int(str(shang1)+'7'+str(shang3)) print main()

代码分析:

首先根据除式已知:

1、被除数的范围是10000到99999,除数的范围是10到100,且可以整除;
2、商为100到1000之间的数,且十位数字为7;
3、商的第一位乘以除数是个三位数,且后两位为77;
4、被除数的第三位一定为4;
5、7乘以除数是一个三位数,且第二位为7,对应第二个X7X;
6、商的最后一位不能为0,且与除数的积是一个二位数;


对于findHead函数,for循环中的x是除数,y是商的第一个数,那么可以判断如果x*y(也就是X77)的后两位数等于77并且x*7(也就是第二个X7X)的第二个数等于7,那么就返回除数x,商的第一个数y,第一个积x*y和第二个积x*7;


对于findTail函数,传入根据findHead函数返回的除数x,因为商的第三个数y是介于1到10的,所以,如果x*y(也就是XX)小于100,那么就返回商的第三个数y和第三个积x*y;


最后,由于已知了第一个积X77,第二个积X7X和第三个积XX,那么就可以通过  积3+积2*10+积1*100来得到被除数,除数不用算就是上面的x,商的值(字符串化)就是findGead中的y加上已知的7加上findTail中的y;


结果:

E:\python\python.exe D:/pycharm/python/奇猫百题/除式还原.py

(51463, 53, 971)


可以根据答案带入尝试!

题目出处:http://www.cheemoedu.com/exercise/56

转载于:https://my.oschina.net/jmbzs/blog/711965

今天的文章除式还原分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59841.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注