题意:输入非负十进制数N,进制b,判断n在b进制下是否为回文数。
输出:Yes/No,换行,数字间以空格隔开,末尾无空格。
方法:将N转换为b进制,用数组保存,数字输出顺序为0~len-1的倒序。
注意:
1.所有一位的数都是回文数
2.当N为0需单独判断,否则循环条件会产生错误。
3.不需要判断到len-1,只需判断到数组的一半
#include<iostream>
using namespace std;
const int LEN = 1000;
int main(void)
{
int n, b;
cin >> n >> b;
int num[LEN];
int mid = n;
bool judge = true;
int len = 0;
while(mid!=0)
{
num[len++] = mid % b;//num[len++]
mid = mid / b;
}
for (int i = 0; i <len/2; i++)//不需要判断到len-1,只需判断到数组的一半
{
if (num[i]!=num[len-i-1])
{
judge = false;
}
}
if (!judge)//!judge即可不用写judge==false
{
printf("No\n");
}
else
{
printf("Yes\n");
}
if (len == 0)
{
printf("0");
}
else
{
printf("%d", num[len-1]);
for (int i = len-2; i >= 0; i--)
{
printf(" %d", num[i]);
}
}
system("PAUSE");
return 0;
}