PTA 회문 번호 (25 분)

무한한 빛을 발산하는 것은 인간의 마음이고, 무한한 어둠을 창조하는 것은 인간의 마음이기도합니다. 빛과 어둠이 얽혀 싸우고, 우리가 향수를 불러 일으키고 무력한 세상입니다.

앞뒤로 쓸 때 동일한 숫자를  Palindromic Number라고 합니다. 예를 들어, 1234321은 회문 번호입니다. 모든 한 자리 숫자는 회문 숫자입니다.

비 회문 번호는 일련의 작업을 통해 회문 번호와 쌍을 이룰 수 있습니다. 먼저, 비 회문 번호가 반전되고 결과가 원래 번호에 추가됩니다. 결과가 회문 번호가 아니면 회문 번호를 제공 할 때까지 반복됩니다. 예를 들어 67에서 시작하면 67 + 76 = 143 및 143 + 341 = 484의 두 단계로 회문 번호를 얻을 수 있습니다.

양의 정수 N이 주어지면 쌍을 이루는 회문 번호와 그것을 찾기 위해 취한 단계 수를 찾아야합니다.

입력 사양 :

각 입력 파일에는 하나의 테스트 케이스가 있습니다. 각 케이스는 두 개의 양수 N과 K로 구성되며, 여기서 N (≤10 10)은 초기 숫자이고 K (≤100)는 최대 단계 수입니다. 숫자는 공백으로 구분됩니다.

출력 사양 :

각 테스트 케이스에 대해 각 줄에 하나씩 두 개의 숫자를 출력합니다. 첫 번째 숫자는 N의 쌍을 이루는 회문 번호이고 두 번째 숫자는 회문 번호를 찾기 위해 취한 단계 수입니다. K 단계 후에 회문 번호를 찾을 수 없으면 K 단계에서 얻은 숫자를 대신 출력하십시오.

샘플 입력 1 :

67 3

샘플 출력 1 :

484
2

샘플 입력 2 :

69 3

샘플 출력 2 :

1353
3
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
//#include<bits/stdc++.h>
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=2e3+10;
string s;
int k,ct;
void add(string t)
{
    int cd=s.length(),jw=0;
    for(int i=0;i<cd;i++)
    {
        s[i]=s[i]+t[i]+jw-'0';
        jw=0;
        if(s[i]>'9')
        {
            s[i]=s[i]-10;
            jw=1;
        }
    }
    if(jw)
        s+='1';
    reverse(s.begin(),s.end());
}
bool pd(string s)
{
    string ls=s;
    reverse(ls.begin(),ls.end());
    if(ls==s)
        return true;
    else
        return false;
}
int main()
{
    cin>>s>>k;
    while(!pd(s)&&ct<k)
    {
        ct++;
        string t=s;
        reverse(t.begin(),t.end());
        add(t);
    }
    if(ct==0)
    {
       cout<<s<<endl;
       cout<<0<<endl;
    }
    else{
       cout<<s<<endl;
       cout<<ct<<endl;
    }
    return 0;
}

 

추천

출처blog.csdn.net/weixin_44170305/article/details/108571572