9596 回文数 存档40%
代码
#include <bits/stdc++.h>
using namespace std;
string szp(long long n,int p)
{
string s="";
while(n)
{
int g=n%p;
if(g<10) s=char(g+48)+s;
else s=char(g+55)+s;
n=n/p;
}
return s;
}
long long pzs(string s,int p)
{
long long h=0,w=1;
for(int i=s.size()-1; i>=0; i--)
{
if(isdigit(s[i])) h+=(s[i]-48)*w;
else h+=(s[i]-55)*w;
w*=p;
}
return h;
}
long long dxs(int n)
{
int s=0;
while(n!=0)
{
int g=n%10;
n=n/10;
s=s*10+g;
}
return s;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n,s=0;
string m;
cin>>n>>m;
while(1)
{
s++;
long long tno=pzs(m,n)+dxs(pzs(m,n));
// cout<<tno<<" ";
if(tno==dxs(tno))
{
cout<<s;
return 0;
}
else m=szp(tno,n);
// cout<<'\n';
if(s>30)
{
cout<<"Impossible!";
return 0;
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
string szp(long long n,int p)
{
string s="";
while(n)
{
int g=n%p;
if(g<10) s=char(g+48)+s;
else s=char(g+55)+s;
n=n/p;
}
return s;
}
long long pzs(string s,int p)
{
long long h=0,w=1;
for(int i=s.size()-1; i>=0; i--)
{
if(isdigit(s[i])) h+=(s[i]-48)*w;
else h+=(s[i]-55)*w;
w*=p;
}
return h;
}
long long dxs(int n)
{
int s=0;
while(n!=0)
{
int g=n%10;
n=n/10;
s=s*10+g;
}
return s;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n,s=0;
string m;
cin>>n>>m;
while(1)
{
s++;
long long tno=pzs(m,n)+dxs(pzs(m,n));
// cout<<tno<<" ";
if(tno==dxs(tno))
{
cout<<s;
return 0;
}
else m=szp(tno,n);
// cout<<'\n';
if(s>30)
{
cout<<"Impossible!";
return 0;
}
}
return 0;
}