PAT乙级 1079.延迟的回文数

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
char s1[1200],s2[1200];
int main()
{
    int n=10;
    cin>>s1;
    while(n--)
    {
        int len1=strlen(s1);
        memset(s2,0,sizeof(s2));
        int num1[1200]={0},num2[1200]={0},num3[1200]={0};
        for(int i=0;s1[i]!='\0';i++)
        {
            s2[strlen(s1)-1-i]=s1[i];
            num1[i]=s1[i]-'0';
            num2[strlen(s1)-1-i]=num1[i];
        }
        s2[strlen(s1)]='\0';
        bool be=false;
        for(int i=0,j=strlen(s1)-1;i<=j;i++,j--)
        {
            if(s1[i]!=s1[j])
            {
                be=true;
                break;
            }
            else
                continue;
        }
        if(!be)
        {
            for(int i=0;i<strlen(s1);i++)
                cout<<s1[i];
            cout<<" is a palindromic number.\n";
            return 0;
        }
        /*for(int i=0;i<strlen(s1);i++)
            cout<<num1[i];
        cout<<endl;
        for(int i=0;i<strlen(s1);i++)
            cout<<num2[i];
        cout<<endl;
        */for(int i=0;s1[i]!='\0';i++)
            cout<<s1[i];
        cout<<" + ";
        for(int i=0;s2[i]!='\0';i++)
            cout<<s2[i];
        cout<<" = ";
        int add=0;
        for(int i=strlen(s1)-1;i>=0;i--)
        {
            int sum=0;
            if(i!=0)
            {
                sum=num1[i]+num2[i]+add;
                num3[i]=sum%10;
                add=sum/10;
            }
            else
                num3[i]=num1[i]+num2[i]+add;
            //cout<<num3[i];
        }
        //for(int i=0;i<strlen(s1);i++)
          //  cout<<num3[i];
        int j=0;
        for(int i=0;i<len1;i++)
        {
            cout<<num3[i];
            if(num3[i]>=10)
            {
                s1[j++]=num3[i]/10+'0';
                s1[j++]=num3[i]%10+'0';
            }
            else
                s1[j++]=num3[i]+'0';
        }
        s1[j]='\0';
        cout<<endl;
        bool par=false;
        for(int i=0;i<(strlen(s1)+1)/2;i++)
        {
            if(s1[i]==s1[strlen(s1)-1-i])
                continue;
            else
            {
                par=true;
                break;
            }
        }
        if(!par)
        {
            for(int i=0;s1[i]!='\0';i++)
                cout<<s1[i];
            cout<<" is a palindromic number.\n";
            return 0;
        }
    }
    cout<<"Not found in 10 iterations.\n";
    return 0;
}

发布了45 篇原创文章 · 获赞 1 · 访问量 6782

猜你喜欢

转载自blog.csdn.net/Ls_attack/article/details/79797916