PAT2021年春季3月份备考_按照套卷刷真题(5-1)

本文分享了一位参赛者在解决1136 ADelayedPalindrome问题时的经验,主要讨论了在比赛中遇到的难点,包括大整数相加的处理和对称数的检查。作者提到,虽然最终得分14分,但比赛中应注意关键细节,如大数运算和初始对称数的情况,而过于追求完美可能导致时间浪费。代码中特别标注了调试部分,供同样水平的程序员参考。
摘要由CSDN通过智能技术生成

题干:1136 A Delayed Palindrome (20 分)

题解:这题做了20分钟,拿了14分,看了别人的满分答案,错在两个地方,一个没有考虑是1000位的大整数相加,需要开发一个独立的函数,还有一项是可能第一个数直接输出进来可能就是对称额数。。。。

这些错误其实无伤大雅了,因为在考场上面注意到第一个错误的可能性还比较大,但是就算注意到编写这种函数也是要花费不少时间的。。。。第二个错误更不可能注意到了。。。所以14分是一个挺务实的分数的。。。没有必要追求完美的答案,然后在那里死扣。。。。

如果你的程度和我差不多,你更应该注意的是我的代码里面注释为“debug part”的部分,如果没有处理好这些问题,你的程序本身都是错的,对那些小细节的注意根本无从谈起

// A1136.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <bits/stdc++.h>
using namespace std;

int main()
{
#ifndef ONLINE_JUDGE
    FILE* s;//debug part
    freopen_s(&s, "in.txt", "r", stdin);
#endif // !ONLINE_JUDGE

    string a;
    cin >> a;
    bool flag;
    for (int i = 0; i < 10; i++) {
        flag = true;//debug part
        string b(a);
        reverse(b.begin(), b.end());
        int sum = stoi(a) + stoi(b);
        string c = to_string(sum);
        for (int i = 0, j = c.size()-1; i <= j; i++, j--) {//debug part
            if (c[i] != c[j]) {
                flag = false;//debug part
            }
        }
        cout << a << " + " << b << " = " << c << endl;
        a = c;
        if (flag)break; //debug part 
    }
    if (flag)cout << a << " is a palindromic number.\n";
    else cout << "Not found in 10 iterations.\n";
    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Exodus&Focus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值