【PAT-A1019】 General Palindromic Number (20 分)
【关键点】
1、写出进制转换函数,利用除 N 取余法。
2、将余数收集到数组中,方便下一步的比较使用。
3、进行回文比较,若不等输出且终止程序(只因不等的好找),若等则顺序向下执行。
#include<iostream>
#include<vector>
using namespace std;
vector<int> arr;
//输出程序
void result(vector<int> arr)
{
for (int i = arr.size() - 1; i >= 0; i--)
{
cout << arr[i];
if (i > 0) {
cout << " ";
}
}
cout << endl;
}
//功能主程序
void test()
{
int num = 0;
int n = 0;
int rel = 0;
int i = 0;
cin >> num;
cin >> n;
//进制转换主要步骤
do
{
rel = num % n;
//cout << rel << " ";
arr.push_back(rel);
num = num / n;
} while (num > 0);
//cout << endl << endl;
int size = arr.size();
int j = 0;
//cout << "size:" << size << endl;
//回文判断
for (int i = 0; i < size; i++)
{
j = size - i - 1;
//cout << "j" << j << "-" << arr[j] << " ";
//cout << endl;
//cout << "i" << i << "-" << arr[i] << " ";
//cout << endl << endl;
if (arr[i] != arr[j])
{
cout << "No" << endl;
result(arr);
return;
}
}
cout << "Yes" << endl;
result(arr);
}
int main()
{
test();
return 0;
}