題目鏈接:https://www.patest.cn/contests/pat-a-practise/1019
題目大意:給定正整數N和b,判斷N的b進制數是不是迴文數
解題思路:
函數Ninb(int n,int b),返回值爲n的b進制數的逆置,判斷此值就可以判斷n的b進制數是否是迴文數
函數isPalindromic(vector num),用來判斷num是否是迴文數
代碼如下:
#include <iostream>
#include <vector>
using namespace std;
bool isPalindromic(vector<int> num){//判斷數num是否是迴文數
int mid=(num.size()-1)/2;
for(int i=0;i<=mid;i++){
if(num[i]!=num[num.size()-1-i])
return false;
}
return true;
}
vector<int> Ninb(int n,int b){//返回值是n的b進制數的逆置
vector<int> res;
if(n==0)
res.push_back(n);
while(n!=0){
res.push_back(n%b);
n=n/b;
}
return res;
}
int main(int argc, char const *argv[])
{
int n,b;
cin>>n>>b;
vector<int> res;
res=Ninb(n,b);
if(isPalindromic(res))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
for(int i=res.size()-1;i>=0;i--){
if(i==0)
cout<<res[i]<<endl;
else
cout<<res[i]<<" ";
}
return 0;
}