P1015 回文数

题目如下:

 思路:

1.题目的考点比较综合【值得做的一个题目非常好!!!】

有进制转换,判断回文数,大数字的加减

代码如下:

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int p;
char y[6]={'A','B','C','D','E','F'};
bool is(string &n1){
    for(int i=0,j=n1.size()-1;i<j;i++,j--)
    {
        if(n1[i]!=n1[j])
        return false;
    }
    return true;
}
void add(string &n1,string &n2,int &p){
    int jinwei=0;
    for(int i=0;i<n1.size();i++)
    {
        int k=n1[i]+n2[i]-'0'-'0'+jinwei;
        jinwei=k/p;
        n1[i]=k%p+'0';
        if(n1[i]>='10'&&n1[i]<='15')
        n1[i]=y[n1[i]-'10'];
    }
    if(jinwei>0)
    n1+=jinwei+'0';
}
int main(){
    int count=0;
    string n1,n2;
    cin>>p>>n1;//p进制的n1 
    for(int i=0;i<n1.size();i++){
        if(n1[i]>='A'&&n1[i]<='F')
        n1[i]=n1[i]-'A'+10+'0';
    }
    for(int c=0;c<30&&!is(n1);c++){
        n2=n1;
        reverse(n1.begin(),n1.end());
        add(n1,n2,p);
        reverse(n1.begin(),n1.end()) ;
        count++;
    }
    if(is(n1))
    cout<<"STEP="<<count<<endl;
    else
    cout<<"Impossible!";
    return 0;
    
}
//2
//101111
无聊就学习 反正没事干
原文地址:https://www.cnblogs.com/miao-xixixi/p/13500158.html