ice


私信TA

用户名:image

访问量:8401

签 名:

等  级
排  名 564
经  验 4155
参赛次数 8
文章发表 5
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:
使用递归 在递归的过程中判断结果是否是回文数 如果是回文数则输出对应的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 人评分

  评论区