USACO-Section1.2 Dual Palindromes [回文数][进制转换]
2017-06-01 19:50
423 查看
2017-6-1
事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数。
编一个程序,从文件读入两个十进制数N (1 <= N <= 15)S (0 < S < 10000)然后找出前N个满足大于S且在两种或两种以上进制(二进制至十进制)上是回文数的十进制数,输出到文件上。
本问题的解决方案不需要使用大于32位的整型
题目大意
如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数。
编一个程序,从文件读入两个十进制数N (1 <= N <= 15)S (0 < S < 10000)然后找出前N个满足大于S且在两种或两种以上进制(二进制至十进制)上是回文数的十进制数,输出到文件上。
本问题的解决方案不需要使用大于32位的整型
题解:
进制转换 和 判断回文代码
/* ID: zachery1 PROG: dualpal LANG: C++ */ #include <iostream> #include <fstream> #include <string> #define cin fin #define cout fout using namespace std; ifstream fin("dualpal.in"); ofstream fout("dualpal.out"); int N, S; char b[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'}; bool isPal(string str) { int i = 0, j = str.length() - 1; while (i < j) { if (str[i] != str[j]) return false; i++; j--; } return true; } string baseB(int x, int B) { string num = ""; while (x) { num = b[x % B] + num; x /= B; } int i; for (i = 0; i < num.length(); i++) if (num[i] != '0') break; return num.substr(i); } int main() { cin >> N >> S; while (N) { S++; int flag = 0; string str; for (int i = 2; i <= 10; i++) { str = baseB(S, i); if (isPal(str)) flag++; } if (flag >= 2) { cout << str << endl; N--; } } return 0; }
相关文章推荐
- USACO-Section1.2 Palindromic Squares [回文数][进制转换]
- USACO 1.2 Dual Palindromes (回文,进制转换)
- USACO 1.2 Palindromic Squares (进制转换,回文)
- USACO 1.2 Palindromic Squares (进制转换,回文)
- USACO之Section1.2.4 Palindromic Squares[回文数][进制转换]
- USACO-Section 1.2 Milking Cows【贪心算法】
- USACO-Section1.2 transform[枚举]
- USACO-Section 1.2 Transformations [...]
- USACO Section1.2 Transformations
- USACO Section 1.2 Milking Cows 解题报告
- [USACO 1.2] Summary of Section 1.2
- USACO Section1.2 Palindromic Squares
- USACO Section 1.2 Name That Number 解题报告
- USACO Section 1.2 Milking Cows
- USACO Section1.2破碎的项链
- USACO Section 1.5 Prime Palindromes(回文数+素数)
- 【枚举】洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes
- USACO-Section 1.2 Milking Cows[数组模拟]
- USACO-Section 1.2 Palindromic Squares【暴力枚举】
- USACO Section1.2 Dual Palindromes