几道回文串题目(poj 2402 ,uestc 1191 ,有道资格赛3 C题)

poj 2402 Palindrome Numbers

题意灰常简单,从1开始求第k个回文数。

首先,手算一下很容易看出x位上的回文数个数为f(x)=9*10^((x+1)/2);

由此我们可以算出第k个回文数的位数,假设为y

tmp=k-sum{f(x)}  ,1<=x<k

则可以求出那个y位的“基数”,例如 5位数abcde。。则基数为100

基数加上tmp.凑成half。然后再对称一下就求出第k个回文数

uestc 1191 beautiful palindromes

意:求出给定区间的“美丽回文数”(简称BP的个数。

“美丽回文数”,就是任意相邻数字都不同的回文数。

可以简单转化成球1x之间的美丽回文数。

分析:通过我们勤劳而智慧的双手,可以先人肉出一些小规律;

①不存在偶数位的“美丽回文数”;

②数位为2*n-1的,个数有 9^n个;

所以可以求出比他数位小的 BP 的个数;

接下来有点说不清了。

举个例子 另x=bcdef 5位数吧。。

首先可以是 万位上可以为 1b-1 个数为  (b-1)*9^2

然后 万位上位b,看千位上可以取的数有yy个   则个数为 yy*9^2个。。

。。。

注意一点当出现有前面连续两数是一样的,那么后面就不用加上了。。

比如  335431127  这样只用是 2*9^4+3^9^3.  后面5那一位就不用加了。。

因为此时相当于前面已有连续相同的数了。。

好吧。。我看不懂我写的了。。

看代码吧。。

 


 

有道资格赛第3场 C题
X星球的身份证系统
描述

在X星球上的外星人和地球上一样拥有一个长N位的身份证号码,而X星球的人使用的是一种26进制身份证号码,用a~z表示。
在X星球上正在举行一次幸运者抽奖活动,X星球的政府首脑制定了一个特殊的抽奖规则,凡是身份证号码符合对称性质(回文串)的人就能够成为本次活动的幸运者。
现在你知道X星球中最大的身份证号码,希望你能够计算出最多有多少人将成为本次活动的幸运者。

输入

输入数据的第一行为一个正整数N,第二行为一个长度为N的字符串,表示已知的最大身份证号码.
其中 N <= 30

输出

本次活动的最大幸运人数模10000的结果.

样例输入 3
bca
样例输出 28

是上一个题目的简化版本。就不多说了。

贴个代码吧。。

阅读更多
个人分类: 【解题报告】
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭