PTA 甲题 1136 A Delayed Palindrome

1136 题目链接

错误点:

1.长度会超过long long,需要大整数相加;

2.输入的s也要判断是否是回文串,若是直接输出结果,结束。

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

bool check(string& s){
    int r=s.size()-1,l=0;
    while(l<r){
        if(s[r]==s[l]){
            l++,r--;
        }
        else return false;
    }
    return true;
}

string add(string a,string b){
    string sum;
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    int a_size=a.size(),b_size=b.size();
    int pre=0,cur=0,i=0;
    while(i<a_size&&i<b_size){
        cur = a[i]-'0'+b[i]-'0'+pre;
        pre=cur/10;
        cur=cur%10;
        i++;
        sum=to_string(cur)+sum;
    }
    while(i<a_size){
        cur=a[i]-'0'+pre;
        pre=cur/10;
        cur=cur%10;
        i++;
        sum=to_string(cur)+sum;
    }
    while(i<b_size){
        cur=b[i]-'0'+pre;
        pre=cur/10;
        cur=cur%10;
        i++;
        sum=to_string(cur)+sum;
    }
    if(pre!=0){
        sum=to_string(pre)+sum;
    }
    return sum;
}

int main(){
    string s;
    int i=0;
    cin>>s;
    if(check(s)){
        cout<<s<<" is a palindromic number."<<endl;
        return 0;
    }
    while(i<10){
        string st=s;
        reverse(st.begin(),st.end());
        string sum=add(s,st);
        // cout<<"sum:"<<sum<<endl;
        cout<<s<<" + "<<st<<" = "<<sum<<endl;
        if(check(sum)){
            cout<<sum<<" is a palindromic number."<<endl;
            return 0;
        }
        i++;
        s=sum;
    }
    cout<<"Not found in 10 iterations.";
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值