UVALive2889 Palindrome Numbers(回文数,神级代码....)
来源:互联网 发布:配置php开发环境 编辑:程序博客网 时间:2024/05/17 04:15
题目链接(Virtual Judge):http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33603
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=890
题意:求第n个回文数.回文数从小到大的排列为1,2,3,4,5,6,7,8,9,11,22...
输入n(1<=n<=2*10^9),求第n小的回文数.如,第24小的回文数为151.
原来打算把素数存在数组里,后来发现不行.网上看到了神级代码....
思路:可以算出来第N个回文数字,长度多长而且是该长度第几个回文串。因为1位数有9个,2位数9个,3位数90,4位数90,可以预处理出来。
当我们知道长度的时候,也知道是第几个的时候,直接将第几个-1然后加上一半长度的回文数字。
比如:24 可以求出他的回文长度是3,是第6个。
回文长度为3,他的第一个数101,他的左半部分是10
6-1=5; 用5直接加上他的左半部分就可以了。15
那么将15反着输出,并且他的长度为3.所以只输出1.
则就是151;
思路是别人的,但我的代码和TA的不同.
AC代码:
#include<iostream>using namespace std;int main(){ int n; while(cin>>n,n) { long long x = 0; while(n>x*2) x = x*10+9; if(n>x+x/10) { n-=x; cout<<n; while(n>0) { cout<<n%10; n/=10; } } else { n-=x/10; cout<<n; n/=10; while(n>0) { cout<<n%10; n/=10; } } cout<<endl; } return 0;}
0 0
- UVALive2889 Palindrome Numbers(回文数,神级代码....)
- Dhaka 2003 / UVa 12050 - Palindrome Numbers (回文数)
- POJ 2402 Palindrome Numbers(LA 2889) 回文数
- Palindrome Numbers(LA2889)第n个回文数是?
- POJ1159:Palindrome(回文数)
- LeetCode Palindrome Number回文数
- Leetcode-- Palindrome Number 回文数
- palindrome-number(回文数)
- LeetCode 9 palindrome (回文数)
- 9. Palindrome Number(回文数)
- Palindrome Function(回文数)
- Palindrome Number判断回文数
- leetcode Palindrome Number 回文数
- Chang'an(Palindrome Numbers-回文数字统计)
- [LeetCode]判断回文数(Palindrome Number)
- 最小回文分割数 Palindrome Partitioning II
- leetcode 9 Palindrome Number 回文数
- [leetcode] Palindrome Number 回文数判断
- 函数指针的用途
- 聊聊R的优势
- Oralce中delete和delete from
- python 取代字符串中的某项 replace,split, join
- 输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。 为了简单起见,我们假设push序列的任意两个整数都是不相等的
- UVALive2889 Palindrome Numbers(回文数,神级代码....)
- Qt入门可能会遇到的一些问题
- 括号匹配(二)
- Object-c对象和消息传递
- Servlet详解
- MFC-GUI绘图相关摘要
- 阿里云ECS+Gunicorn+Supervisor+Nginx部署Flask
- 2016华为机试题:大数相减
- 一个月有几天