1019. General Palindromic Number (20)

題目鏈接: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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章