您的位置:首页 > 其它

zoj 1078 Palindrom Numbers

2011-12-28 22:33 281 查看
#include "iostream"
#include "string"
#include "vector"
using namespace std;

int main()
{
int num, i;
vector<int> v;
while (cin >> num && num)
{
v.clear();
for (i = 2; i < 17; i++)//从2到16进制的数进行相除,求出进制的表示法
{
int temp = num, temp1, length;
string str = "";
while (temp)//求进制数,并将进制数表示为字符串的形式!
{
temp1 = temp % i;
str += (temp1 + 48);
temp /= i;
}
length = str.size();
if (length % 2 == 0)//下面就字符串进行判断,判断是否为回文字符串!如果是,就将i保存在V容器中
{
int flag = 0;
for (int j = 0; j < length / 2; j++)
{
if (str[j] != str[length - 1 - j])
{
flag = -1;
break;
}
}
if (flag == 0)
v.push_back(i);
}
else
{
int flag = 0;
for (int j = 0; j < (length-1)/2; j++)
{
if (str[j] != str[length - 1 - j])
{
flag = -1;
break;
}
}
if (flag == 0)
v.push_back(i);
}
}
int size = v.size();
//结果的输出!
if (size)
{
cout << "Number " << num << " is palindrom in basis";
for (int q = 0; q < size; q++)
cout << " " << v[q] ;
cout << endl;
}
else
cout << "Number " << num << " is not a palindrom" << endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: