1078 Palindrom Numbers
来源:互联网 发布:陌陌软件 编辑:程序博客网 时间:2024/03/29 03:21
Total Submit: 5044 Accepted Submit: 2193
Statement of the Problem
We say that a number is a palindrom if it is the sane when read from left to right or from right to left. For example, the number 75457 is a palindrom.
Of course, the property depends on the basis in which is number is represented. The number 17 is not a palindrom in base 10, but its representation in base 2 (10001) is a palindrom.
The objective of this problem is to verify if a set of given numbers are palindroms in any basis from 2 to 16.
Input Format
Several integer numbers comprise the input. Each number 0 < n < 50000 is given in decimal basis in a separate line. The input ends with a zero.
Output Format
Your program must print the message Number i is palindrom in basis where I is the given number, followed by the basis where the representation of the number is a palindrom. If the number is not a palindrom in any basis between 2 and 16, your program must print the message Number i is not palindrom.
Sample Input
17
19
0
Sample Output
Number 17 is palindrom in basis 2 4 16
Number 19 is not a palindrom
Problem Source: South America 2001
http://acm.zju.edu.cn/show_problem.php?pid=1078
using namespace std;
int convert(int n, int list[], int basis); //转换进制
int main()
...{
int num[1000];
bool flag1, flag2;
int basis[17], counter = 1;
int n, len;
cin >> n;
while ( n != 0 )
...{
flag1 = 1;
counter = 1;
for ( int i = 2; i < 17; i++ )
...{
len = convert(n, num, i)+1;
flag2 = true;
for ( int j = 0; j < len/2; j++ )
...{
if ( num[j] != num[len-j-1] )
...{
flag2 = false; //flag2标志该数在该进制下是否回文数
break;
}
}
if ( flag2 )
...{
flag1 = 0;
basis[counter] = i;
counter++;
}
}
if ( !flag1 ) //flag1 标志是否有解
...{
cout << "Number " << n << " is palindrom in basis";
for ( int k = 1; k < counter; k++ )
...{
cout << " " << basis[k];
}
cout << endl;
}
else
...{
cout << "Number " << n << " is not a palindrom" << endl;
}
cin >> n;
}
return 0;
}
int convert(int n, int list[], int basis)
...{
int total = 0;
while ( n >= basis )
...{
list[total] = n % basis;
total++;
n /= basis;
}
list[total] = n;
return total;
}
- 1078 Palindrom Numbers
- ZOJ 1078 Palindrom Numbers
- zoj 1078 Palindrom Numbers
- ZOJ 1078 :Palindrom Numbers
- zoj 1078 Palindrom Numbers
- ZOJ 1078-Palindrom Numbers
- zoj 1078 Palindrom Numbers
- ZOJ--1078:Palindrom Numbers
- Palindrom Numbers
- Palindrom Numbers
- Palindrom Numbers
- ZOJ Problem Set - 1078(Palindrom Numbers)
- ZOJ 1078 Palindrom Numbers
- ZOJ Problem Set - 1078 Palindrom Numbers
- ZOJ Problem Set - 1078||Palindrom Numbers
- zoj1078 Palindrom Numbers
- fjnu 1827 Palindrom Numbers
- ZOJ1078 Palindrom Numbers
- 异端辩解
- linux
- 项目在市场上有大量竞争对手
- 采用Oracle Archive Log模式和非Archive Log模式对备份恢复的影响
- 平淡生活:天大的决定
- 1078 Palindrom Numbers
- 创业日记
- 写博客的人如何保重龙体?
- win32 api mfc理解zz
- 兼容IE、FF的悬停banner效果(需配合JQuery使用)
- 今天继续不上班
- LDAP专题(一)
- Mysql优化
- 解决【无任何网络提供程序接受指定的网络路径】