Dual Palindromes

2024-01-08 15:08
文章标签 dual palindromes

本文主要是介绍Dual Palindromes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Dual Palindromes

Description

一个数字如果从左往右读和从右往左读都是一样的那么它就是回文数。数字12321显然就是回文数,而77778就不是。当然,回文数不可能前端和末尾同时有0,所以说0220不是回文数。
十进制数21用十进制表示不是回文数,但是21实际上用二进制表示却是回文数(10101).
编写一个程序读取两个十进制数字:
• N (1 <= N <= 15)
• S (0 < S < 10000)
然后找到并输出严格大于S的前N个十进制数字,这N个数字满足在两种或两种以上进制(二进制至十进制)上是回文数。
此问题的解决方案不需要操作大于标准32位的整数。

PROGRAM NAME: dualpal

INPUT FORMAT

单行用空格分隔整数N和S

SAMPLE INPUT (file dualpal.in)

3 25

OUTPUT FORMAT

一共N行,每行为一个十进制数字,该数字满足在两种或两种以上进制(二进制至十进制)上是回文数。这些数字需要按照从小到大的顺序排列。

SAMPLE OUTPUT (file dualpal.out)

26
27
28

设计算法

这个题起初写出来没过,感觉其实是没错的,去了洛谷看了一下它的翻译结果是自己翻译理解错了,我以为条件是这N个数字满足在以进制base(2 <= base <= 10)表示时是回文数就行了,结果其实是要在两种及以上进制表示都是回文数才算符合条件。
这题其实不难,甚至代码中的函数都可以从Palindromic Squares这道题中照搬,一些思路在Palindromic Squares中也讲了,那么就只需要用几个动态变量来记录一下值用于设置终止条件和输出条件就行了。

C++编写

/*
ID:your_id_here
TASK: dualpal
LANG: C++                 
*/
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;const string t="0123456789";
int N,S;bool check(string str)
{int len=str.size();for(int i=0;i<len/2;i++){if(str[i]!=str[len-1-i])return false;}return true;
}string conv(int x,int y)
{string num;while(y){int a = y%x;y/=x;num+=t[a];}reverse(num.begin(),num.end());return num;
}void solve()
{int rec1=0;for(int i=S+1;rec1<N;i++){int rec2=0;for(int j=2;j<11;j++){if(check(conv(j,i)))++rec2;if(rec2==2){cout<<i<<endl;++rec1;break;}}}
}int main()
{freopen("dualpal.in","r",stdin);freopen("dualpal.out","w",stdout);cin>>N>>S;solve();return 0;
}

这篇关于Dual Palindromes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583866

相关文章

【UVA】11584-Partitioning by Palindromes(动态规划)

动态规划。 如果 j + 1 ~ i是回文,那么 dp[i] = min=(dp[j] + 1);  判断j + 1~ i是不是回文可以进行预处理,方法是枚举中心,之后向两边伸张,(需要枚举2次,一次是偶数回文,一次是奇数回文) 13993253 11584 Partitioning by Palindromes Accepted C++ 0.132 2014-08-05 08:2

ModuleNotFoundError: No module named ‘diffusers.models.dual_transformer_2d‘解决方法

Python应用运行报错,部分错误信息如下: Traceback (most recent call last): File “\pipelines_ootd\unet_vton_2d_blocks.py”, line 29, in from diffusers.models.dual_transformer_2d import DualTransformer2DModel ModuleNotF

USACO Section 1.5 Prime Palindromes

题意: 输入a和b  求 a和b之间所有既是素数同时又有回文性质的数  从小到大输出 思路: 如果枚举a到b之间所有的数再判断素数和回文那么复杂度会比O(n)还大  本题O(n)都会跪 因此思路转到能否 先得到所有素数再判断回文 或者 先得到所有回文的数在判断素数 本题我的做法是后者  说下原因 本题b最大为10^8  因此构造回文的数字可以枚举1~10000中的数字再对数字翻折

Queries for Number of Palindromes

~~~~~~       Queries for Number of Palindromes ~~~~~      总题单链接 思路 ~~~~~       设 g [ L ] [ R ] g[L][R] g[L][R] 表示区间 [ L , R ] [L,R] [L,R] 是否为回文串。 ~~~~~      预处理 g g g,枚举回文串的中点,从每个中点开始向两侧扩展,判断

【CF245H】【Queries for Number of Palindromes】

H. Queries for Number of Palindromes time limit per test 5 seconds memory limit per test 256 megabytes input standard input output standard output You've got a string s = s1s2...

ural Mnemonics and Palindromes (dp)

http://acm.timus.ru/problem.aspx?space=1&num=1635 给出一个字符串,将这个字符串分成尽量少的回文串。 起初没有思路,想着应该先预处理出所有的回文串,然后进行dp。但是字符串的长度是4000,O(n^3)肯定不行,其实可以转化为O(n^2),就是枚举中点而不是枚举起点和终点,又NC了吧。 然后就是线性的dp了。dp[i]表示到第i位为

postgresql报dual表错误解决办法

解决:数据库创建表视图 create or replace view dual asselect NULL::"unknown"where 1=1;alter table dual owner to 连接用户名;grant all on table dual to 连接用户名;grant select on table dual to public;

lightoj1033 - Generating Palindromes (LCS)

题意:给你一个字符串,至少需要添加多少字符可以使得它变成一个回文串. 思路 :设串S的反串为S‘那么strlen(S) - LCS(S, S')就是本问题的答案. 如: S(原串)       A   b  3  b  d S1(倒序串)   d   b  3  b  A LCS                   b  3  b         所以,有3个字符已经配对,不用添加

转:oracle数据库里dual表是什么表?

这几天一直在研究oracle,常常会用到dual这个系统表,dual表到底是一个什么表?带着疑问google了一下,现在总结一下: DUAL是Oracle与数据字典一起自动创建的一个表,它只有一列:DUMMY,其数据类型为:VARCHAR2(1)。DUAL中只有一行数据:'X'。DUAL属于SYS模式,但所有用户都可以使用DUAL名称访问它。用SELECT计算常量表达式、伪列等值时常用该表,因为

HDU2029 Palindromes _easy version【回文串】【水题】

Palindromes _easy version Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 24195    Accepted Submission(s): 14903 Pro