打卡
1.问题:一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一
个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两
小时后里程表上出现了一个新的对称数,该数仍为5位数。问该车的速度是多
少?新的对称数是多少?
2.思路:已知目标对称数为五位数,因而可以从i=95859开始循环遍历判断是否对称,其间可通过to_string()函数将整数i转换成字符串,然后用一个函数利用i与j作为双指针来判断字符是否相同,最后求出新的对称数和时速。
3.程序流程图:

4.代码实现:
using namespace std;
int fact(string str)
{
for(int i=0,j=str.size()-1;i!=j;i++,j--){
if(str[i]!=str[j])
return 1;
}
return 0;
}
int main()
{
int k=1;
int j=95859;
int i=95860;
double v;
while(k>0)
{
string str = to_string(i);
k=fact(str);
i++;
}
v=(i-1-j)/2;
cout<<"速度为每小时"<<v<<"公里 "<<"对称数为"<<i-1;
return 0;
}

浙公网安备 33010602011771号