C++回文数问题。急! 5

ProblemDescription一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。任取一个正整数,如果不是回文数,将... Problem Description
一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止。例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数。于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数。至今为止还不知道这个猜想是对还是错。现在请你编程序验证之。
Input
每行一个正整数。
特别说明:输入的数据保证中间结果小于2^31。
Output
对应每个输入,输出两行,一行是变换的次数,一行是变换的过程。
Sample Input
27228
37649

Sample Output
3
27228--->109500--->115401--->219912
2
37649--->132322--->355553
展开
 我来答
微俊king
2015-10-21 · TA获得超过576个赞
知道小有建树答主
回答量:626
采纳率:50%
帮助的人:566万
展开全部
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

void revstr(const char* s, char* res){

        int len = strlen(s), i;
        for(i = 0; i < len; ++i)
                res[i] = s[len - 1 - i];
        res[i] = 0;

}

int main(){

        char str[100];
        char res[100];
        string dis;
        int cnt;
        long m, n;
        while(scanf("%s", str) != EOF){

                cnt = 0;
                dis = str;
                while(1){
                        revstr(str, res);
                        if(!strcmp(str, res))
                                break;
                        sscanf(str, "%ld", &m);
                        sscanf(res, "%ld", &n);
                        long tmp = m + n;
                        sprintf(str, "%ld", tmp);
                        ++cnt;
                        dis += "--->";
                        dis += str;
                }
                cout<<cnt<<endl;
                cout<<dis<<endl;



        }
        return 0;
}

不知道能不能过。。。。。。

思路看懂就好 希望LZ好好学习

追问
没有更简单的吗?很多没学过
追答
。。。。。。。。。。。你要多简单 先试试能不能过再说。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式