【USACO 1.2.5】双重回文数
【题目描述】
如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。
事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数。
编一个程序,从文件读入两个十进制数N (1 <= N <= 15)S (0 < S < 10000)然后找出前N个满足大于S且在两种或两种以上进制(二进制至十进制)上是回文数的十进制数,输出到文件上。
本问题的解决方案不需要使用大于32位的整型
【格式】
INPUT FORMAT:
(file dualpal.in)
只有一行,用空格隔开的两个数N和S。
OUTPUT FORMAT:
(file dualpal.out)
N行, 每行一个满足上述要求的数,并按从小到大的顺序输出.
【分析】
这道题教会了我写函数模板的重要性......
#include <cstdlib>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
const int maxl=;
using namespace std;
int shu_1[maxl],shu_2[maxl];
int temp[maxl];
//进制转换
void change(int *shu,int num,int system);
bool check(int *shu);//检查是否是回文数
int main()
{
int n,i,s,cnt=; //文件操作
freopen("dualpal.in","r",stdin);
freopen("dualpal.out","w",stdout);
scanf("%d%d",&n,&s); for (i=s+;;i++)
{
if (cnt==n) break;
int lj=;
for (int j=;j<=;j++)
{
change(shu_1,i,j);
if (check(shu_1)) lj++;
}
if (lj>=) {printf("%d\n",i);cnt++;}
}
return ;
}
//把一个num转换成system进制的数
void change(int *shu,int num,int system)
{
int point=;
memset(shu,,sizeof(shu));
memset(temp,,sizeof(temp));
point++;
//进制转换
while (num!=)
{
int t;
t=num%system;
num=num/system;
temp[point++]=t;
}
point--;
for (int i=point;i>=;i--) shu[point-i+]=temp[i];
shu[]=point;//长度
return;
}
bool check(int *shu)
{
int point=shu[],i;
for (i=;i<=(point/)+;i++)
if (shu[i]!=shu[point-i+]) return ;
return ;
}
【USACO 1.2.5】双重回文数的更多相关文章
- 洛谷P1207 [USACO1.2]双重回文数 Dual Palindromes
P1207 [USACO1.2]双重回文数 Dual Palindromes 291通过 462提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 暂时没有讨论 ...
- COGS 678. 双重回文数
★ 输入文件:dualpal.in 输出文件:dualpal.out 简单对比时间限制:1 s 内存限制:128 MB Dual Palindromes 双重回文数 描述 [USACO ...
- 洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes
P1207 [USACO1.2]双重回文数 Dual Palindromes 题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而7777 ...
- 【洛谷P1207】双重回文数 【USACO1.2】
P1207 [USACO1.2]双重回文数 Dual Palindromes 题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一 ...
- USACO Training Section 1.2 双重回文数 Dual Palindrom
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...
- luogu1207双重回文数[usaco1.2]Dual Palindromes
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事实上 ...
- 【USACO 1.2.4】回文平方数
[题目描述] 回文数是指从左向右念和从右向左念都一样的数.如12321就是一个典型的回文数. 给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下 ...
- leetcode-479-Largest Palindrome Product(找到两个乘数相乘得到的最大的回文数)
题目描述: Find the largest palindrome made from the product of two n-digit numbers. Since the result cou ...
- hdu1282回文数猜想
Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...
随机推荐
- 数据结构(Splay平衡树):COGS 339. [NOI2005] 维护数列
339. [NOI2005] 维护数列 时间限制:3 s 内存限制:256 MB [问题描述] 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际 ...
- 高效算法——D 贪心,区间覆盖问题
Given several segments of line (int the X axis) with coordinates [Li , Ri ]. You are to choose the m ...
- Seek the Name, Seek the Fame - POJ 2752(next运用)
题目大意:小猫是非常有名气的,所以很多父母都来找它给孩子取名字,因为找的人比较多,小猫为了摆脱这个无聊的工作,于是它发明了一种取名字的办法,它把孩子父母的名字合在一起,然后从这个名字里面找一个前缀,并 ...
- python环境配置selenium与IE、Chrome、Firefox、PhantomJS
安装.升级selenium pip install -U selenium 下载对应平台最新版的browser driver chrome: http://chromedriver.storage.g ...
- 一篇文章看懂spark 1.3+各版本特性
Spark 1.6.x的新特性Spark-1.6是Spark-2.0之前的最后一个版本.主要是三个大方面的改进:性能提升,新的 Dataset API 和数据科学功能的扩展.这是社区开发非常重要的一个 ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- java參数传递机制浅析
欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...
- 深入懂得android view 生命周期
作为自定义 view 的基础,如果不了解android view 的生命周期 , 那么你将会在后期的维护中发现这样那样的问题 ....... 做过一段时间android 开发的同学都知道,一般 on ...
- 实现nodejs的promises库(基于promise.js改写)
原promise.js库地址:https://github.com/stackp/promisejs promises是JavaScript实现优雅编程的一个非常不错的轻量级框架.该框架可以让你从杂乱 ...
- TCP/IP协议原理与应用笔记07:HTTP、TCP/IP与socket区别
1. TCP/IP协议与HTTP协议区别: HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件 ...