HDU1282-回文数猜想

ec5d4d2b63b458535243c106.jpg
代码:
#include<iostream> 
#include<cstring> 
using namespace std; 
int main(void

    char snumber[1001],snumber1[1001],snumber2[1001],answer[1001][1001]; 
    int len1,flag,a,k,i,j; 
    while(cin>>snumber) 
    { 
        strcpy(snumber1,snumber); 
        strrev(snumber1);//将数字倒置 
        j=1
        strcpy(answer[0],snumber); 
        //大数相加,再加上点处理 
        while(strcmp(snumber,snumber1)) 
        { 
            k=1
            len1=strlen(snumber); 
            a=snumber[0]-'0'
            memset(snumber2,0,sizeof(snumber2)); 
            for(i=0;i<len1;i++) 
                snumber2[k++]=snumber[i]+snumber1[i]-'0'
             
            for(i=len1;i>=2;i--) 
            { 
                if(snumber2[i]>'9'
                { 
                    snumber2[i]-=10
                    snumber2[i-1]++; 
                } 
            } 
            flag=0
            if(snumber2[1]>'9'
            { 
                snumber2[1]-=10
                snumber2[0]='1'
                flag=1
            } 
            memset(snumber,0,sizeof(snumber)); 
            if(!flag) 
                for(i=0;i<len1;i++) 
                { 
                    snumber[i]=snumber2[i+1];     
                } 
            else 
                for(i=0;i<=len1;i++) 
                { 
                    snumber[i]=snumber2[i]; 
                } 
            strcpy(answer[j++],snumber); 
            strcpy(snumber1,snumber); 
            strrev(snumber1); 
        } 
        cout<<j-1<<endl; 
        for(i=0;i<j-1;i++) 
            cout<<answer[i]<<"--->"
        cout<<answer[j-1]; 
        cout<<endl; 
    } 
    return 0

转载于:https://www.cnblogs.com/cchun/archive/2011/08/23/2520143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值