zoukankan      html  css  js  c++  java
  • 【蓝桥杯】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





  • 相关阅读:
    [转载]Oracle 11g R1中资本管理器增强(2)
    [转载]Oracle监听器安装与设置(2)
    [转载]Oracle 11g R1中资源管理器加强(3)
    [转载]Oracle能否吸收领跑数据库市场?(2)
    [转载]怎样高效删除Oracle数据库中的反双数据
    [转载]Oracle 11g R1下的主动内存处置惩罚(1)
    [转载]Oracle假造公用数据控制设备使用
    [转载]Oracle可否担当领跑数据库市场?(1)
    [转载]将oracle 9i备份文件导入oracle 8i的方式简介
    OpenSuSE 11.1内行装置教程(贴图版)
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7355937.html
Copyright © 2011-2022 走看看