ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自用PTA题目记录0016

2020-12-05 18:01:41  阅读:387  来源: 互联网

标签:0016 string chI PTA 自用 result str01 str02 回文


自用PTA题目记录0016

以下题目序号并无实际意义

文章目录


7-17 构造回文数

题目作者: 胡伟平 单位: 广西科技大学 代码长度限制: 16 KB 时间限制: 400 ms 内存限制: 64 MB

回文数是一种很有趣的数,对于一个不是回文数的数,我们可以通过以下操作来将其变成回文数:将数反转,加到原数上,重复这个过程,直到得到回文数为止。

输入格式: 输入1个数位不超过1000的正整数。

输出格式: 对每一个输入,输出将其变成回文数的过程。每一行按以下个数输出:

A + B = C

A是原数,B是反转数,C是和,重复这个过程,直到C是回文数为止。在最后一行输出C is a palindromic number.。为了控制循环次数,我们规定,如果经过10次操作,还得不到回文数,那么停止,显示Not found in 10 iterations.

输入样例1:
1234

输出样例1:
1234 + 4321 = 5555
5555 is a palindromic number.

输入样例2:
1239102349120349

输出样例2:
1239102349120349 + 9430219432019321 = 10669321781139670
10669321781139670 + 07693118712396601 = 18362440493536271
18362440493536271 + 17263539404426381 = 35625979897962652
35625979897962652 + 25626979897952653 = 61252959795915305
61252959795915305 + 50351959795925216 = 111604919591840521
111604919591840521 + 125048195919406111 = 236653115511246632
236653115511246632 + 236642115511356632 = 473295231022603264
473295231022603264 + 462306220132592374 = 935601451155195638
935601451155195638 + 836591551154106539 = 1772193002309302177
1772193002309302177 + 7712039032003912771 = 9484232034313214948
Not found in 10 iterations.

代码

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string stringAdd(string, string);

int main(int argc, char const *argv[])
{
    string str01;
    string str02;
    string str03;
    int chI;

    cin >> str01;

    str02 = str01;
    reverse(str02.begin(), str02.end());

    if (!str01.compare(str02))
    {
        cout << str01 << " is a palindromic number." << endl;
        return 0;
        // good for you, question author? 
    }

    for (int i = 0; i < 10; i++)
    {
        str02 = str01;
        reverse(str02.begin(), str02.end());

        str03 = stringAdd(str01, str02);

        cout << str01 << " + " << str02 << " = " << str03 << endl;

        str01 = str03;
        reverse(str03.begin(), str03.end());

        if (!str01.compare(str03))
        {
            cout << str01 << " is a palindromic number." << endl;
            return 0;
        }
    }
    cout << "Not found in 10 iterations." << endl;

    return 0;
}

string stringAdd(string str01, string str02)
{
    string result = "";
    char ch;
    int chI;
    bool aFlag = false;

    for (int i = 0; i < str01.length(); i++)
    {
        chI = str01[str01.length() - 1 - i] + str02[str02.length() - 1 - i] - 96;

        if (aFlag)
        {
            chI++;
        }

        if (chI >= 10)
        {
            aFlag = true;
            ch = chI + 38;
        }
        else
        {
            ch = chI + 48;
            aFlag = false;
        }

        result = ch + result;
    }
    if (aFlag)
    {
        result = "1" + result;
    }

    return result;
}

总结

备注位置是这题的大坑,给我卡了很久,这个题目作者脑回路我对不上

PTA提交通过截图
在这里插入图片描述

标签:0016,string,chI,PTA,自用,result,str01,str02,回文
来源: https://blog.csdn.net/ELT_Core/article/details/110704591

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有