USACO Section 1.2 Dual Palindromes 解题报告
题目
题目描述
有一些数(如 21),在十进制时不是回文数,但在其它进制(如二进制时为 10101)时就是回文数。
编一个程序,从文件读入两个十进制数N、S。然后找出前 N 个满足大于 S 且在两种以上进制(二进制至十进制)上是回文数的十进制数。
数据范围
1 <= N <= 150 < S < 10000
样例输入
3 25
样例输出
26
27
28
解题思路
按照Palindromic Squares的解题思路,我们直接枚举所有的数字,然后判断是否满足条件,满足条件的输出即可。
解题代码
/*
ID: yinzong2
PROG: dualpal
LANG: C++11
*/
#define MARK
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 32;
char alph[20] = {'0', '1', '2', '3', '4',
'5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J'
};
int n,s;
char *trans(int x, int base) {
char *b = new char[MAXN];
int len = 0;
while(x) {
b[len++] = alph[x%base];
x /= base;
}
b[len] = '\0';
return b;
}
bool judge(char s[]) {
int len = strlen(s);
for(int i = 0, j = len-1; i <= j; i++, j--) {
if(s[i] != s[j]) {
return false;
}
}
return true;
}
int main() {
#ifdef MARK
freopen("dualpal.in", "r", stdin);
freopen("dualpal.out", "w", stdout);
#endif // MARK
while(~scanf("%d%d", &n, &s)) {
bool flag;
//用cnt来保证一共找到n个符合要求的回文串
for(int i = 1, cnt = 0; cnt < n; i++) {
flag = false;
//num用来记录一个数在2~10进制之间共有几种进制是回文串
int num = 0;
for(int j = 2; j <= 10; j++) {
if(judge( trans(s+i, j) )) {
num++;
if(num >= 2) {
flag = true;
cnt++;
break;
}
}
}
if(flag) {
printf("%d\n", s+i);
}
}
}
return 0;
}
USACO Section 1.2 Dual Palindromes 解题报告的更多相关文章
- USACO Section 1.5 Prime Palindromes 解题报告
题目 题目描述 题目就是给定一个区间[a,b]((5 <= a < b <= 100,000,000)),我们需要找到这个区间内所有既是回文串又是素数的数字. 输入样例 5 500 ...
- USACO Section1.2 Dual Palindromes 解题报告
dualpal解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...
- USACO Section 1.3 Prime Cryptarithm 解题报告
题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...
- USACO Section 1.4 Arithmetic Progressions 解题报告
题目 题目描述 现在给你一个数集,里面的数字都是由p^2+q^2这种形式构成的0 <= p,q <= M,我现在需要你在其中找出一个长为N的等差数列,数列中的第一个数字为a,公差为b,当你 ...
- USACO Section 1.3 Combination Lock 解题报告
题目 题目描述 农夫John的牛从农场逃脱出去了,所以他决定用一个密码锁来把农场的门锁起来,这个密码锁有三个表盘,每个表盘都是环形的,而且上面刻有1~N,现在John设了一个开锁密码,而且这个锁的设计 ...
- USACO Section 1.3 Barn Repair 解题报告
题目 题目描述 某农夫有一个养牛场,所有的牛圈都相邻的排成一排(共有S个牛圈),每个牛圈里面最多只圈养一头牛.有一天狂风卷积着乌云,电闪雷鸣,把牛圈的门给刮走了.幸运的是,有些牛因为放假,所以没在自己 ...
- USACO Section 1.3 Mixing Milk 解题报告
题目 题目描述 Merry Milk Makers 公司的业务是销售牛奶.它从农夫那里收购N单位的牛奶,然后销售出去.现在有M个农夫,每个农夫都存有一定量的牛奶,而且每个农夫都会有自己的定价.假设所有 ...
- USACO Section 1.2 Palindromic Squares 解题报告
题目 题目描述 输入一个基数B,现在要从1到300之间找出一些符合要求的数字N.如果N的平方转换成B进制数之后是一个回文串,那么N就符合要求.我们将N转换成B进制数输出,然后再将N的平方转换成B进制数 ...
- USACO Section 1.2 Milking Cows 解题报告
题目 题目描述 有3个农夫每天早上五点钟便起床去挤牛奶,现在第一个农夫挤牛奶的时刻为300(五点钟之后的第300个分钟开始),1000的时候结束.第二个农夫从700开始,1200结束.最后一个农夫从1 ...
随机推荐
- Chapter 2 Open Book——7
I gunned my deafening engine to life, ignoring the heads that turned inmy direction, and backed care ...
- 图片(img标签)大小自适应
$(function(){ var myimg,oldwidth,oldheight; var maxwidth=249; var maxheight=187; var imgs = document ...
- apt-get 依赖修复
apt-get cleanapt-get update apt-get -f install dpkg --configure -a
- POJ2524:Ubiquitous Religions (并查集模板)
Description There are so many different religions in the world today that it is difficult to keep tr ...
- 控制器view的加载顺序initWithNibName >>> viewDidLoad >>> viewWillAppear >>> viewDidAppear
-(void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBarHidden=NO;// 邓超界:放在wil ...
- 用GDB调试程序的设置 Segmentation fault(Core Dump)调试
在写wifi库的时候碰见一个 Segmentation fault(Core Dump) 所以需要用GDB调试下. 在cmake的时候,修改CMakeLists.txt set(CMAKE_C_FLA ...
- Java 中的四种引用及垃圾回收策略
Java 中有四种引用:强引用.软引用.弱引用.虚引用: 其主要区别在于垃圾回收时是否进行回收: 1.强引用 使用最普遍的引用.如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾回收器绝不会 ...
- 相对路径json无法获取
在获取json文件内容时,有时会出现相对路径上的json文件无法获取的情况,Chrome上的解决方案如下: 1.右击桌面上的Chrome浏览器图标,点击属性; 2.在目标输入框的内容后头加上--arg ...
- C++字符串(1)
C++ 拼接字符串常量 C++允许拼接字符串字面值,即将两个用引号括起的字符串合并为一个.事实上,任何两个由空白(空格,制表符和换行符)分隔的字符串常量都将自动拼接成一个. 例子: cout < ...
- HTML+CSS D08浮动
1. <html> <head> <title>div浮动</title> <style type="text/css"> ...