原题自行百度。
这个题其实没啥难的,数据也很水,直接暴力即可。
唯一的关键在于转换进制,这个貌似跟数学联系比较紧。十进制数转换为n进制,方法就是原数除以进制,记下余数和商,用商接着除。直到商是零,然后把余数倒着写即可。
自己可以动手模拟一下,想一想,为什么?
十进制下 满十进一,n进制满n进一。
其实最初除一下得到的商可以看做是向下一位进了多少个“一”,那余数自然是当前位上的数字了。然后用商接着除便是在高一位上接着看能向下一位进多少个“一”,而余数同样是当前位数字,以此类推,进制转换便是 除以进制,余数倒写 了!!!
然后要注意超过十进制时每一位可能会有两位数,按题目规定要用A,B,C之类来表示,输出时候转换一下即可。
比较是否回文时可以把整个数拆开存在数组里来比较。
好了,代码
/*
ID:herekig1
PROG:palsquare
LANG:C++
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int b;int chg[90010],f[90010],cnt,cntb,yuan[310],chy[310];
void jinb(int x){
memset(yuan,0,sizeof(yuan));
memset(chy,0,sizeof(chy));cntb=0;
do{
chy[++cntb]=x%b;
x/=b;
}while(x!=0);
for(int i=1;i<=cntb;++i){
yuan[i]=chy[cntb+1-i