题131.pat甲级练习-1019 General Palindromic Number (20 分)
一、题目
二、题解
本题要你判断进制转换后的N是否为回文数,思路简单,但是要注意一点,就是进制转换后有些位数可能是不是个位数,所以不能单纯的转换位字符串之后reverse判断相等来判断是否为回文数(比如我转换后为1010,此时就是回文数,但是reverse判断就不是了),而可以把转换后的每一位数放到数组里头,然后reverse整个数组,然后去一个个的判断是否有不相同数的时候,如果有则不是回文数,反之则是。
#include <bits/stdc++.h>
using namespace std;
vector<int> res,re_res;
int judge(int num,int radis)
{
while(num)
{
int temp=num%radis;
res.push_back(temp);
num/=radis;
}
int flag=1;
re_res=res;
reverse(re_res.begin(),re_res.end());
for(int i=0;i<res.size();i++)
{
if(res[i]!=re_res[i])
{
flag=0;
break;
}
}
return flag;
}
int main()
{
int N,radis;
cin>>N>>radis;
int flag=judge(N,radis);
if(flag)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
for(int i=res.size()-1;i>=0;i--)
{
cout<<res[i];
if(i>0)
{
putchar(' ');
}
}
}