回文数字,注意边界情况 0 2这种。代码当时下边落了i,结果还过很多测试,很久才找到,蛋疼!
if (a[i] != a[c-1-i])
<pre name="code" class="cpp">#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
using namespace std;
#define MAX 50
int isPalin(int a[], int c)
{
for (int i = 0; i < c/2; i++)
if (a[i] != a[c-1-i])
return 0;
return 1;
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int N = 0, base = 0, cnt = 0;
int trans[MAX];
cin >> N >> base;
while (N)
{
trans[cnt++] = N%base;
N /= base;
}
if (isPalin(trans, cnt))
cout << "Yes" << endl;
else
cout << "No" << endl;
if (0 == cnt)
cout << 0;
else
{
for (int i = cnt-1; i >= 0; i--)
{
cout << trans[i];
if (i != 0)
cout << " ";
}
}
return 0;
}