zoukankan      html  css  js  c++  java
  • 回文数字

    问题 B: 回文数字

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 34  解决: 19
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

     观察数字: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


    解题思路:暴力求解。如果超时可以先打表,存入所有5位和6位的回文数字。回文判断的简便方法是使用reverse()函数把字符串反转,如果还和之前的相同,则为回文数字。
    #include <bits/stdc++.h>
    using namespace std;
    
    int n;
    bool flag;
    
    bool is_hw(int x)
    {
        string s1,s2;
        s1=s2=to_string(x);//把int类型转化成string类型
        reverse(s1.begin(),s1.end());//反转字符
        if(s1==s2)return true;//反转后还和原来相同则为回文数
        return false;
    }
    
    bool is_like(int x)
    {
        int sum=0;
        while(x!=0)
        {
            sum+=x%10;
            x/=10;
        }
        if(sum==n)return true;
        return false;
    }
    
    int main()
    {
        while(cin>>n)
        {
            flag=false;
            for(int i=10001;i<=999999;++i)
            {
                if(is_hw(i)&&is_like(i)){cout<<i<<endl;flag=true;}
            }
            if(flag==false)cout<<-1<<endl;
        }
        return 0;
    }


  • 相关阅读:
    学习进度条 第十五周
    学习进度条 第十四周
    买书问题
    第二冲刺阶段 工作总结 10
    第二冲刺阶段 工作总结09
    05构建之法阅读笔记之五
    第二阶段工作总结 08
    React 浅析
    React 开发规范
    React 组件的生命周期
  • 原文地址:https://www.cnblogs.com/wjw2018/p/9288259.html
Copyright © 2011-2022 走看看