问题:求车速:
一辆以固定行驶的汽车 司机在上午10点看历程表上的读数是一个对称数(既这个数从左往右和从右往左
完全是一样的)为95859 两个小时候历程表上出现了一个新的对称数 该数称为五位数
问该车的速度是多少 新的对称数是多少
思路:
我们可以从条件中获取到对称数是第一位与第五位一致 第二位和第四位一致
对于此类的问题,用穷举法就可以解决,找到初值条件95859 结束条件是什么
就是当出现对称数的时候,程序就结束。
首先 我们需要做的就是获取各个位数的关系,这里使用了for 将每个位存到a数组中
分别对应万位 千位 百位 十位 个位
当i=95860
a[0] = (95860%100000)/10000 = 9 k = 10000
a[1] = (95860%10000)/10000 = 5 k = 1000
a[2] = (95860%1000)/1000 = 8 k = 100
a[3] = (95860%100)/100 = 6 k = 10
a[4] = (95860%10)/10 = 0
#include<stdio.h>
void main(){
/*
问题:求车速:一辆以固定行驶的汽车 司机在上午10点看历程表上的读数是一个对称数(既这个数从左往右和从右往左
完全是一样的)为95859 两个小时候历程表上出现了一个新的对称数 该数称为五位数
问该车的速度是多少 新的对称数是多少
思路:
我们可以从条件中获取到对称数是第一位与第五位一致 第二位和第四位一致
对于此类的问题,用穷举法就可以解决,找到初值条件95859 结束条件是什么
就是当出现对称数的时候,程序就结束。
首先 我们需要做的就是获取各个位数的关系,这里使用了for 将每个位存到a数组中
分别对应万位 千位 百位 十位 个位
当i=95860
a[0] = (95860%100000)/10000 = 9 k = 10000
a[1] = (95860%10000)/10000 = 5 k = 1000
a[2] = (95860%1000)/1000 = 8 k = 100
a[3] = (95860%100)/100 = 6 k = 10
a[4] = (95860%10)/10 = 0
**/
int t,a[5];
long int k,i;
for(i=95860;;i++){
for(t=0,k=100000;k>=10;t++){
a[t] = (i%k)/(k/10);
k/=10;
}
if((a[0]==a[4])&&(a[1]==a[3])){
printf("历程表上出现的对称数为:%d%d%d%d%d
",a[0],a[1],a[2],a[3],a[4]);
printf("该车的速度为:%.2f
",(i-95859)/2.0);//注意用2.0 否则出现的是一个整型参数
break;
}
}
}