pat-A1019-General Palindromic Number

题目链接->link

题意描述

给出一个10进制数和一个要求的进制,首先转换为该进制,然后判断转换后的数是否为回文串。

思路

  1. 10进制转换为其他进制,用除基留余法即可。
  2. 判断回文串只需判断i位与n-i位是否相同,只要出现一个不同,就不是。特殊情况,单个数字也算回文串,0的回文串就是0。
  3. 数据范围小于等于10的9次方,即小于等于2的32次方。

代码

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>

using namespace std;

bool Judge(int con[],int num){//判断回文串
    for(int i=0;i<num/2;i++){
        if(con[i]!=con[num-1-i]){
            return false;
            break;
        }
    }
    return true;
}

int main(){
    int n,b;
    scanf("%d %d",&n,&b);
    int con[32],num=0;
    do{//进制转换
        con[num++]=n%b;
        n/=b;
    }while(n!=0);
    if(Judge(con,num)){
        printf("Yes\n");
    }
    else printf("No\n");
    for(int i=num-1;i>=0;i--){
        printf("%d",con[i]);
        if(i!=0)printf(" ");
    }
    printf("\n");
    return 0;
}
发布了28 篇原创文章 · 获赞 1 · 访问量 581

猜你喜欢

转载自blog.csdn.net/MichealWu98/article/details/104300219
今日推荐