【蓝桥杯】PREV-21 回文数字

题目链接:http://lx.lanqiao.org/problem.page?gpid=T113

历届试题 回文数字

时间限制:1.0s   内存限制:256.0MB

问题描述

  观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

  本题要求你找到一些5位或6位的十进制数字。满足如下要求:

  该数字的各个数位之和等于输入的整数。

输入格式

  一个正整数 n (10<n<100), 表示要求满足的数位和。

输出格式

  若干行,每行包含一个满足要求的5位或6位整数。

  数字按从小到大的顺序排列。

  如果没有满足条件的,输出:-1

样例输入

44

样例输出

99899

499994

589985

598895

679976

688886

697796

769967

778877

787787

796697

859958

868868

877778

886688

895598

949949

958859

967769

976679

985589

994499

样例输入

60

样例输出

-1

题解:自定义一个类,用来保存回文数以及各个位数之和。然后按从小到大的顺序直接构造。最后直接查找即可

AC代码:

#include<iostream>
#include<string>
#define N 1000000
using namespace std;
int pos=0,n;
class Node{
	public:
	int sum;
	string num;
	void Calc(int k,int flag){
	string str="",tmp="";
	while(k) {
		str+='0'+k%10; k/=10;
	}
	tmp+=str[2]; tmp+=str[1];
	if(flag){
	str=tmp+str;
	}
	else str=tmp+str[0]+str;
	num=str;
	}
	void CalcBit(){
		string s=num;
		int total=0,len=s.size();
		for(int i=0;i<len;i++) total+=s[i]-'0';
		sum=total;
	}
}x[N];
void init(){
	for(int i=100;i<1000;i++){
	   x[pos].Calc(i,1);
	   x[pos++].CalcBit();
	}
	for(int i=100;i<1000;i++){
	   x[pos].Calc(i,0);
	   x[pos++].CalcBit();
	}
}
int main()
{
	init();
	cin.sync_with_stdio(false);
	cin>>n;
	int flag=1;
	for(int i=0;i<pos;i++)
	if(x[i].sum==n)cout<<x[i].num<<endl,flag=0;
	if(flag)cout<<-1<<endl;
	return 0;
}


<span style="color: rgb(51, 51, 51); font-family: 宋体, 'Times New Roman';font-size:18px; line-height: 18.5714302062988px;">出处:</span><a target=_blank href="http://blog.csdn.net/mummyding" style="font-family: 宋体, 'Times New Roman';font-size:18px; line-height: 18.5714302062988px;">http://blog.csdn.net/mummyding</a><span style="color: rgb(51, 51, 51); font-family: 宋体, 'Times New Roman';font-size:18px; line-height: 18.5714302062988px;"> </span>
作者:MummyDing

f

时间: 2024-10-18 20:48:16

【蓝桥杯】PREV-21 回文数字的相关文章

1503140110-蓝桥杯-历届试题 回文数字

历届试题 回文数字 时间限制:1.0s   内存限制:256.0MB 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找到一些5位或6位的十进制数字.满足如下要求: 该数字的各个数位之和等于输入的整数. 输入格式 一个正整数 n (10<n<100), 表示要求满足的数位和. 输出格式 若干行,每行包含一个满足要求的5位或6位整数. 数字按从小到大的顺序排列. 如果没有满足条件的,输出:-1 样例

蓝桥杯:回文数字

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;}

蓝桥杯 - 回文数字 (字符串!!)

问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找到一些5位或6位的十进制数字.满足如下要求: 该数字的各个数位之和等于输入的整数. 输入格式 一个正整数 n (10<n<100), 表示要求满足的数位和. 输出格式 若干行,每行包含一个满足要求的5位或6位整数. 数字按从小到大的顺序排列. 如果没有满足条件的,输出:-1 样例输入 44 样例输出 99899 499994 589985 5988

蓝桥杯历届试题之回文数字

问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找到一些5位或6位的十进制数字.满足如下要求: 该数字的各个数位之和等于输入的整数. 输入格式 一个正整数 n (10<n<100), 表示要求满足的数位和. 输出格式 若干行,每行包含一个满足要求的5位或6位整数. 数字按从小到大的顺序排列. 如果没有满足条件的,输出:-1 样例输入 44 样例输出 99899 499994 589985 5988

蓝桥杯--回文数字

问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找到一些5位或6位的十进制数字.满足如下要求: 该数字的各个数位之和等于输入的整数. 输入格式 一个正整数 n (10<n<100), 表示要求满足的数位和. 输出格式 若干行,每行包含一个满足要求的5位或6位整数. 数字按从小到大的顺序排列. 如果没有满足条件的,输出:-1 样例输入: 48 样例输出: 6999967899877988978799

UVALive 2889(回文数字)

题意:给定i,输出第i个回文数字. 分析:1,2,3,4,……,9------------------------------------------------------------------------------------------9个 11,12,13,14,……,19-------------------------------------------------------------------------------------9个 101,111,121,131,141

LeetCode 9 Palindrome Number(回文数字判断)

Long Time No See ! 题目链接https://leetcode.com/problems/palindrome-number/?tab=Description 首先确定该数字的位数.按照已知数字x对10进行多次求余运算,可以得到数字位数. 具体思路: 1.每次取出该数字的最高位和最低位进行比较. 2.如果不相等则直接返回FALSE, 3.如果相等修改x的值(去掉最高位也同时去掉最低位)其中去掉最高位可以通过求模运算,去掉最低位可以采用除以10 4.进行循环直到x的值不大于0为止

回文数字判断

/** * 回文数字判断 * * @param num * @since 0.0.1 */ public void huiwen(String num){ Integer temp = (num.length())/2 ; System.out.println(temp); boolean flag = true; for (int i = 0; i < num.length(); i++) { if (temp > 0) { if (i >= temp) { break; } } Sy

算法笔记_181:历届试题 回文数字(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找到一些5位或6位的十进制数字.满足如下要求: 该数字的各个数位之和等于输入的整数. 输入格式 一个正整数 n (10<n<100), 表示要求满足的数位和. 输出格式 若干行,每行包含一个满足要求的5位或6位整数. 数字按从小到大的顺序排列. 如果没有满足条件的,输出:-1 样例输入 44 样例输