关于算法-数据结构:PAT甲级1019-General-Palindromic-Number

题目粗心:

给出两个整数n、b,问十进制整数n在b进制下是否是回文数,若是,则输入Yes;否则,输入No.在此之后输入n在b进制下的示意。

算法思路:

先将整数N转化为b进制数,而后判断该数字是否为回文数,最初输入后果即可。

将十进制数N转化为b进制数办法:
vector<int> r;//保留N的b进制数的每一位 
while(N!=0){
    r.push_back(N%b);
    N /= b;
}
判断该数字是否为回文数办法:
for(int i=0;i<r.size()/2;++i){
    if(r[i]!=r[r.size()-1-i]){
        isPalindromic = false;
    }
} 
留神点:
1、最初输入该数字的时候得倒序输入 
提交后果:

AC代码:
#include<cstdio>
#include<vector>

using namespace std;

int main(){
    int N,b;
    scanf("%d %d",&N,&b);
    //将N转化为b进制数
    vector<int> r;//保留N的b进制数的每一位 
    while(N!=0){
        r.push_back(N%b);
        N /= b;
    }
    bool isPalindromic = true;
    // 判断是否为回文数 
    for(int i=0;i<r.size()/2;++i){
        if(r[i]!=r[r.size()-1-i]){
            isPalindromic = false;
        }
    } 
    if(isPalindromic){
        printf("Yes\n");
    }else{
        printf("No\n");
    }
    //输入该数字
    for(int i=r.size()-1;i>=0;--i){
        printf("%d",r[i]);
        if(i>0) printf(" ");
    }
    return 0;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理