观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
标签:简便 mst bsp lan als 正整数 回文数字 soft string
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; }
标签:简便 mst bsp lan als 正整数 回文数字 soft string
原文地址:https://www.cnblogs.com/wjw2018/p/9288259.html