水题一道
虽然进制基数可能很大,但是直接做短除法就可以了。
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
int n,b;
scanf("%d %d",&n,&b);
if(n==0)
{
printf("Yes\n0\n");
return 0;
}
vector<int> v;
int x=n,y=0;
while(x!=0)
{
y=x%b;
v.push_back(y);
x/=b;
}
int l=v.size(),mid=v.size()/2,i,bl=1;
for(i=0;i<=mid;i++)
{
if(v[i]!=v[l-i-1])
{
bl=0;
break;
}
}
if(bl)
printf("Yes\n");
else
printf("No\n");
printf("%d",v[l-1]);
for(i=l-2;i>=0;i--)
printf(" %d",v[i]);
printf("\n");
return 0;
}
本文详细介绍了如何通过短除法解决进制转换问题,并提出了一种简便方法来判断一个数是否为回文数,特别适用于进制基数较大的情况。文章深入探讨了算法的实现细节及其实用性。
1713

被折叠的 条评论
为什么被折叠?



