解题思路:
使用递归 在递归的过程中判断结果是否是回文数 如果是回文数则输出对应的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分
2 人评分
回文串 (C语言代码)浏览:2830 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1232 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:603 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:534 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:520 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:682 |
C语言训练-亲密数 (C语言描述,反正怎么都能对)浏览:2155 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:549 |
C二级辅导-计负均正 (C语言代码)浏览:634 |
整数分类 oj上总是wrong answer浏览:662 |