1019 General Palindromic Number (20 分)
#include<iostream>
#include<vector>
using namespace std;
vector<int>num;
bool check()//判断回文数
{
for(int i=0,j=num.size()-1;i<j;i++,j--)
{
if(num[i]!=num[j])
{
return false;
}
}
return true;
}
int main()
{
int n,b;
cin>>n>>b;//b进制
if(n==0)num.push_back(0);
while(n!=0)
{
num.push_back(n%b);
n/=b;
}
if(check())puts("Yes");
else puts("No");
cout<<num.back();//先输出最后一位,为了防止输出多余空格
for(int i=num.size()-2;i>=0;i--)
{
cout<<" "<<num[i];
}
return 0;
}
方法二
#include <cstdio>
using namespace std;
int main()
{
int a, b;
cin>>a>>b;
int arr[40], index = 0;
while(a != 0)
{
arr[index++] = a % b;
a = a / b;
}
int flag = 0;//flag=0是回文数
for(int i = 0; i < index / 2; i++) //判断回文数
{
if(arr[i] != arr[index-i-1])
{
printf("No\n");
flag = 1;
break;
}
}
if(!flag) printf("Yes\n");//是回文数
for(int i = index - 1; i >= 0; i--)
{
printf("%d", arr[i]);
if(i != 0) printf(" ");
}
if(index == 0)
printf("0");
return 0;
}