無限の光を放つのは人間の心であり、無限の闇を生み出すのも人間の心であり、光と闇が絡み合って戦うこの世界は、懐かしくて無力な世界です。
順方向または逆方向に書かれたときに同じになる数は、回文数と呼ばれ ます。たとえば、1234321は回文番号です。すべて1桁の数字は回文番号です。
非回文数は、一連の演算を介して回文数と組み合わせることができます。最初に、非パリンドローム番号が逆転され、結果が元の番号に追加されます。結果が回文番号でない場合は、回文番号が得られるまでこれが繰り返されます。たとえば、67から開始すると、67 + 76 = 143、および143 + 341 = 484の2つのステップで回文数を取得できます。
正の整数Nが与えられると、その対の回文数とそれを見つけるためにとったステップ数を見つけることになります。
入力仕様:
各入力ファイルには1つのテストケースが含まれています。各ケースは2つの正の数NとKで構成されます。N(≤1010)は最初の数値で、K(≤100)は最大ステップ数です。番号はスペースで区切られます。
出力仕様:
各テストケースについて、各行に1つずつ、2つの数値を出力します。最初の数はNの対の回文数であり、2番目の数は回文数を見つけるために実行されるステップの数です。Kステップ後にパリンドローム番号が見つからない場合は、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;
}