您的位置:首页 > 其它

ZOJ1078 Palindrom Numbers

2008-10-30 18:09 260 查看
#include <iostream>

#include <stack>

#include <vector>

using namespace std;

bool IsPalindrom(stack<int>& s,const vector<int>& v)

{//判断是否是"回文"

int index = 0;

while(!s.empty())

{

if(s.top()!=v[index++])

{

return false;

}

s.pop();

}

return true;

}

bool DividN(int num,int n)

{//n进制除法

stack<int> s1;

vector<int> v1;

int tmp;

while (num!=0)

{

tmp = num%n;

s1.push(tmp);

v1.push_back(tmp);

num = num/n;

}

return IsPalindrom(s1,v1);

}

int main(void)

{

int n,i;

while(cin>>n&&n!=0)

{

bool isFirst = true;//第一个是回文的进制

for (i=2;i<=16;++i)

{

if (DividN(n,i))

{

if (isFirst==true)

{

cout<<"Number "<<n<<" is palindrom in basis "<<i;

isFirst = false;

}

else

{

cout<<" "<<i;

}

}

}

if (isFirst==true)

{//不是回文

cout<<"Number "<<n<<" is not a palindrom";

}

cout<<endl;

}

return 0;

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