-
//zoj1078 Palindrom Numbers
-
//Accepted 1078 C ++ 00:00.00 392K
-
#include <stdio.h>
-
#include <string.h>
-
int n;
-
//把十进制的num转换成k进制,返回s的长度
-
int converse(int s[],int num,int k)
-
{
-
int len = 0;
-
while (num){
-
s[len++] = num%k;
-
num /= k;
-
}
-
return len;
-
}
-
bool palindrom(int s[],int len)
-
{
-
for (int i=0; i<len/2; ++i)
-
if (s[i] != s[len-1-i]) return false;
-
return true;
-
}
-
void solve()
-
{
-
int k,s[20],a[17]={0};
-
bool flag = false;
-
for (k=2; k<=16; ++k){
-
int len = converse(s,n,k);
-
if (palindrom(s,len)) {
-
a[k] = 1;
-
flag = true;
-
}
-
}
-
if (flag) {
-
printf ("Number %d is palindrom in basis",n);
-
for (k=2; k<=16; ++k)
-
if (a[k]) printf (" %d",k);
-
}
-
else printf ("Number %d is not a palindrom",n);
-
printf ("/n");
-
}
-
int main()
-
{
-
#ifdef ONLINE_JUDGE
-
#else
-
freopen("1078.txt","r",stdin);
-
#endif
-
while (scanf("%d",&n)!=EOF && n)
-
solve();
-
#ifdef ONLINE_JUDGE
-
#else
-
fclose(stdin);
-
#endif
-
return 0;
-
}
zoj1078 Palindrom Numbers
最新推荐文章于 2021-07-15 13:56:16 发布