1019 General Palindromic Number (20 分)
Ideas
The base conversion of code one uses a very cumbersome method, the division base conversion, so in the second code, the remainder base conversion is used.
The number of palindromes can be judged by half of the for loop search.
Code one
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N,b,n,temp;
scanf("%d%d",&N,&b);
int num = 1;
for(int i =1 ;i<32;i++)
{
num = num * b;
if((N - num)<0)
{
n = i-1;
break;
}
}
int res[32]={
0};
temp = N;
for (int i = n;i>=0;i--)
{
num = 1;
for(int j = 0;j<i;j++)
{
num*=b;
}
res[i] =temp / num;
temp -= res[i] * num;
}
int flag = 1;
for (int i = n;i>=n/2;i--)
{
if(res[i]!= res[n-i])
{
flag=0;
break;
}
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
for (int i = n;i>=0;i--)
{
if(i==0)
cout<<res[i];
else
cout<<res[i]<<' ';
}
}
Code two
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N,b,n,temp;
scanf("%d%d",&N,&b);
int res[32]={
0};
int num = 0;
do{
res[num++] = N%b;
N = N/b;
}while(N!=0);
n = num-=1;
int flag = 1;
for (int i = n;i>=n/2;i--)
{
if(res[i]!= res[n-i])
{
flag=0;
break;
}
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
for (int i = n;i>=0;i--)
{
if(i==0)
cout<<res[i];
else
cout<<res[i]<<' ';
}
}