尾数前移
2016-07-14 00:00
211 查看
问题描述:
求一个自然数N,个位数是6,将6提到最前面所得数是N的4倍。
我的代码:
我的思路:
前两行和后两行是用来计算该程序运行时间的。
int(str(i)[-1::])的作用是取得数的最后一位,然后判断该数是不是等于6,然后(数-6)/10得到除了个位数之外的数,int(str(a)+str(b))是用来得到一个以6开头的新数,最后在判断这个新数是否为原数的4倍;
结果:
E:\python\python.exe D:/pycharm/python/奇猫百题/尾数前移.py
153846
6
示例代码:
代码分析:
示例代码的for循环直接是6以前的数nn,然后通过while循环(6不断乘以10,nn不断除以10)得到以6开头后面全为0的数t,而原数就是10*n+6,新数就是t+n,这样就得到了两个数,最后在判断即可;
总结:
我的代码因为取值范围是1000000比较慢,而示例代码循环的是100000,所以很快,事实证明我的用了6秒,它用了不到1秒;
题目出处:http://www.cheemoedu.com/exercise/82
求一个自然数N,个位数是6,将6提到最前面所得数是N的4倍。
我的代码:
import datetime starttime = datetime.datetime.now() a=b=c=0 for i in xrange(10,1000000): a=int(str(i)[-1::]) if a!=6: continue b=(i-6)/10 c=int(str(a)+str(b)) if c==i*4: print i endtime = datetime.datetime.now() print (endtime - starttime).seconds
我的思路:
前两行和后两行是用来计算该程序运行时间的。
int(str(i)[-1::])的作用是取得数的最后一位,然后判断该数是不是等于6,然后(数-6)/10得到除了个位数之外的数,int(str(a)+str(b))是用来得到一个以6开头的新数,最后在判断这个新数是否为原数的4倍;
结果:
E:\python\python.exe D:/pycharm/python/奇猫百题/尾数前移.py
153846
6
示例代码:
def fun(n): nn = n t = 6 while nn > 0: t *= 10 nn /= 10 m = 10 * n + 6 if t + n == m * 4: print m for x in range(1, 100000): fun(x)
代码分析:
示例代码的for循环直接是6以前的数nn,然后通过while循环(6不断乘以10,nn不断除以10)得到以6开头后面全为0的数t,而原数就是10*n+6,新数就是t+n,这样就得到了两个数,最后在判断即可;
总结:
我的代码因为取值范围是1000000比较慢,而示例代码循环的是100000,所以很快,事实证明我的用了6秒,它用了不到1秒;
题目出处:http://www.cheemoedu.com/exercise/82
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法