输出第n个回文数。

规律就是一位和两位的回文数各有9个,三位四位的回文数各有90个,以此类推。

给出n,可以先判定一下第n个回文数的位数,然后后面也不难推,但是有很多细节需要注意。

 #include <cstdio>
#include <algorithm>
#include <cassert>
using namespace std;
typedef long long LL; const int maxl = ; LL a[maxl + ], sum[maxl + ], pow10[maxl]; int main()
{
//freopen("in.txt", "r", stdin); pow10[] = ;
for(int i = ; i <= ; i++) pow10[i] = pow10[i - ] * ; a[] = ;
for(int i = ; i <= maxl; i++)
{
if(i % == ) a[i] = a[i - ];
else a[i] = a[i-] * ;
}
for(int i = ; i <= maxl; i++) sum[i] = sum[i - ] + a[i];
//for(int i = 1; i <= maxl; i++) printf("%lld\n", sum[i]); int n;
while(scanf("%d", &n) == && n)
{
n--;
int digits = upper_bound(sum+, sum++maxl, n) - sum;
//printf("%d\n", digits);
int f = (digits - ) / ; //自由元的个数
LL x = n - sum[digits - ];
LL t = x / pow10[f] + ; //最高位数字
assert(t < );
LL l = x % pow10[f];
char s[];
s[] = t + '';
if(f)
{
for(int i = f; i > ; i--)
{
s[i] = l % + '';
l /= ;
}
assert(l == );
}
for(int i = f+; i < digits; i++) s[i] = s[digits--i];
s[digits] = ;
printf("%s\n", s);
} return ;
}

代码君

LA 2889 (找规律) Palindrome Numbers的更多相关文章

  1. LA 5059 (找规律 SG函数) Playing With Stones

    题意: 有n堆石子,两个人轮流取,每次只能取一堆的至少一个至多一半石子,直到不能取为止. 判断先手是否必胜. 分析: 本题的关键就是求SG函数,可是直接分析又不太好分析,于是乎找规律. 经过一番“巧妙 ...

  2. POJ2402 Palindrome Numbers第K个回文数——找规律

    问题 给一个数k,给出第k个回文数  链接 题解 打表找规律,详见https://www.cnblogs.com/lfri/p/10459982.html,差别仅在于这里从1数起. AC代码 #inc ...

  3. 找规律/数位DP HDOJ 4722 Good Numbers

    题目传送门 /* 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () http://www.cnblogs.com/crazyapple/p/3315436.html 数 ...

  4. HDU 4731 Minimum palindrome (2013成都网络赛,找规律构造)

    Minimum palindrome Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. HDU - 4722 Good Numbers 【找规律 or 数位dp模板】

    If we sum up every digit of a number and the result can be exactly divided by 10, we say this number ...

  6. SGU 169 Numbers (找规律)

    题意:中文题,直接忽略... 析:先说说我的思路,我一看这个题第一感觉就是要找规律,要是挨着算,猴年马月都跑不完,更何况时间限制是0.25s,怎么找规律呢,我算了一下前10位,分别是8,1,1,3,1 ...

  7. HDU 4731 Minimum palindrome (找规律)

    M=1:aaaaaaaa…… M=2:DFS+manacher, 暴出N=1~25的最优解,找规律.N<=8的时候直接输出,N>8时,头两个字母一定是aa,剩下的以aababb循环,最后剩 ...

  8. HDU 4731 Minimum palindrome 打表找规律

    http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...

  9. E - Palindrome Numbers

    题目链接:https://vjudge.net/contest/237394#problem/E A palindrome is a word, number, or phrase that read ...

随机推荐

  1. Notification用法

    String message = "You should click come back now. It is time out more than 10 minutes."; / ...

  2. HDU 5486 Difference of Clustering 图论

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5486 题意: 给你每个元素一开始所属的集合和最后所属的集合,问有多少次集合的分离操作,并操作和不变操 ...

  3. HDU 4101 Ali and Baba

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4101 一看之下以为是博弈,后来分析才知道只是搜索题. 首先,我们需要从值为-1的位置由内向外搜索一次, ...

  4. 【BZOJ】【2588】COT(Count On a Tree)

    可持久化线段树 maya……树么……转化成序列……所以就写了个树链剖分……然后每个点保存的是从它到根的可持久化线段树. 然后就像序列一样查询……注意是多个左端点和多个右端点,处理方法类似BZOJ 19 ...

  5. 【BZOJ】【2594】【WC2006】水管局长数据加强版

    LCT 动态维护MST嘛……但是有删边= =好像没法搞的样子 离线记录所有修改&询问,倒序处理,就可以变删边为加边了- 论如何用LCT维护最小生成树:先搞出一棵最小生成树,然后每次加边(u,v ...

  6. BZOJ3550: [ONTAK2010]Vacation

    3550: [ONTAK2010]Vacation Time Limit: 10 Sec  Memory Limit: 96 MBSubmit: 91  Solved: 71[Submit][Stat ...

  7. unity调用MMBilling_2.4.2 Android SDK.

    原地址:http://www.cnblogs.com/ayanmw/p/3736284.html 项目要使用android 的移动支付SDK 应用内付费[http://dev.10086.cn/wik ...

  8. leetcode Largest Rectangle in Histogram 解法二

    上一篇文章讲了该题的一个解法.后来又发现一个更好的解法. 首先依旧考虑一个升序的数列,例如1,2,3,4,5.那么它的最大矩形显然是有5种可能,即 1*5,2*4,3*3,4*2,1*5.所以最大的矩 ...

  9. Calling Lua From a C Program

    Introduction From a running C program, you can call a Lua script. The C program can pass arguments t ...

  10. poj 1006 生理周期(中国剩余定理)

    题目 题目有中文翻译,自行查看. 中国剩余定理,基础的,但是我最早还是一窍不通,后来看了各种网上的博客上的相关解析,终于有点懂了,下面这个链接是让我懂得蛮多的一个博客,虽然大体上和其他的差不多. 代码 ...