您的位置:首页 > 其它

zoj1078 Palindrom Numbers

2006-07-10 19:38 447 查看
//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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: