PAT甲1024. Palindromic Number (25)

自己写得一团糟……

#include <cstdio>
#include <cstdlib>
#include <string.h>
#include <cmath>
#include <algorithm>
using namespace std;

struct bign
{
    int d[1110];
    int len;
    bign()
    {
        memset(d,0,sizeof(d));
        len=0;
    }
};

bign changetob(char a[])
{
    bign c;
    c.len=strlen(a);
    for(int i=0;i<c.len;i++)
    {
        c.d[c.len-1-i]=a[i]-'0';
    }
    return c;
}

bign add(bign a,bign b)
{
    bign c;
    int carry=0;
    for(int i=0;i<a.len||i<b.len;i++)
    {
        int temp=carry+a.d[i]+b.d[i];
        c.d[c.len++]=temp%10;
        carry=temp/10;
    }
    if(carry!=0)
    {
        c.d[c.len++]=carry;
    }
    return c;
}

bign reverse(bign a)
{
    bign b;
    b.len=a.len;
    for(int i=0;i<a.len;i++)
    {
        b.d[b.len-i-1]=a.d[i];
    }
    return b;
}

bool judgep(bign a)
{
    if(a.len==1)return true;
    int l=a.len/2;
    for(int i=0;i<=l;i++)
    {
        if(a.d[i]!=a.d[a.len-i-1])
            return false;
    }
    return true;
}

int main()  
{       
    char a[1010];
    bign A,B,C;
    int k;
    scanf("%s%d",&a,&k);
    A=changetob(a);
    int index=0;
    bool isp;
    while(index<k&&judgep(A)==false)
    {
            B=A;
            reverse(B.d,B.d+B.len);
            A=add(A,B);
            index++;
    }
    for(int i=0;i<A.len;i++)
    {
        printf("%d",A.d[A.len-i-1]);
    }
    printf("\n");
    printf("%d\n",index);
    system("pause");
    return 0;
}
阅读更多
文章标签: 1024
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

PAT甲1024. Palindromic Number (25)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭