原题链接:回文数(一)
解题思路:
使用递归 在递归的过程中判断结果是否是回文数 如果是回文数则输出对应的step
如果超出8step输出0
注意事项:
在进行数值反转相加的之前需要对反转的数值先进行保存 防止修改了数据 后面还需要使用
判断是否是回文数的地方直接使用数组存储对应位置上的数值即可
参考代码:
#include <bits/stdc++.h>
using namespace std;
bool ff(int y){
int a[100];
int i = 0;
while(y){
a[i++] = y%10;
y /= 10;
}
for(int j = 0; j < i/2; j++){
//printf("%d --> %d\n", j, a[j]);
if(a[j] != a[i-j-1]){
return false;
}
}
return true;
}
void f(int num, int step){
if(step > 8){
printf("0\n");
return ;
}
if(ff(num)){
printf("%d\n", step);
return ;
}
int sum = 0;
int m = num;
while(m){
sum = (m%10) + sum*10;
m /= 10;
}
//printf("%d+%d=", num, sum);
num = sum+num;
//printf("%d\n", num);
f(num, ++step);
}
int main(){
int n;
scanf("%d", &n);
while(n--){
int x;
scanf("%d", &x);
f(x, 0);
}
return 0;
}0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复