问题描述
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95589。连个小时候里程表上出现了一个新的对称数,该数仍为5位数,问该车的速度是多少,新的对称数是多少?
问题分析
假设所求对数为i,并设其初值为95850,使i的值依次递增。对每个取值分解,确保第一位和第五位, 第二位和第四位比较并相等。
算法设计
需要对一个5位数进行分解并保存成数组,比较数字也就是比较下标。
Code
# !/user/bin/python3
# -*- coding: utf-8 -*-
# @author: HHVic
# @desc: 计算车速
import time
# add timer to calculate the performance
# Basic performance
###############################################################
start = time.time()
if __name__=='__main__':
a=[0,0,0,0,0] #列表a存放分解后的5个数字
#i为里程数初始值,由最后结果仍是5位数,所以最大值为100000
for i in range(95860,100000):
t=0 #列表a的下标
k=100000
while k>=10:
a[t]=(i%k)//(k//10) #保存分解后的数字
k/=10
t+=1
if a[0]==a[4] and a[1]==a[3]:
print('里程表上出现的心的对称数为:%d%d%d%d%d'%(a[0],a[1],a[2],a[3],a[4]))
print('该车的速度:%.2f'%((i-95859)/2.0))
break
end = time.time()
print("The Basic Runtime is {0}".format((end-start)))
结果
里程表上出现的心的对称数为:95959
该车的速度:50.00
The Basic Runtime is 0.0