回文数字

历届试题 回文数字 


问题描述
  观察数字: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

回文数字

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 // 计算回文数之和 
 6 int sum(int x)
 7 {
 8     int s = 0;
 9     while(x)
10     {
11         s += (x%10);
12         x /= 10;
13     }
14     return s;
15 }
16 // 判断是否为回文数 
17 bool get(int x)
18 {
19     int i = 0;
20     int a[7] = {0};
21     while(x)
22     {
23         a[i] = x%10;
24         i++;
25         x /= 10;
26     }
27     if(i == 5 && a[0] == a[4] && a[1] == a[3])
28         return true;
29     if(i == 6 && a[0] == a[5] && a[1] == a[4] && a[2] == a[3])
30         return true;
31     return false;    
32 }
33 
34 //
35 bool sure(int n)
36 {
37     int c = 0;
38     for(int i=10001;i<=999999;i++){
39         if(get(i) && sum(i) == n){
40             cout<<i<<endl;
41             c++;
42         }
43     }
44     if(c == 0){
45         cout<<"-1"<<endl;
46         return false;
47     }
48  } 
49 
50 int main()
51 {
52     int n;
53     while(cin>>n)
54     {
55         sure(n);
56     }
57 
58     return 0;
59 }

View Code

 

原文链接: https://www.cnblogs.com/mabeyTang/p/10260815.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    回文数字

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/288394

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午10:56
下一篇 2023年2月15日 上午10:59

相关推荐