WooKinson

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

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

  本题要求你找到一些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
题目描述

 

代码如下:

 1 #include <stdio.h> 
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 int main(void)
 6 {
 7     int n;
 8     int i,j,k,res,count;
 9     int check[6];
10     scanf("%d",&n);
11     
12     res = 0;
13     for (i=10000 ; i<1000000 ; i++)
14     {
15         count = k = 0;
16         for (j=i ; j>0 ; j/=10)
17         {
18             check[k] = j%10;    //用于验证是否满足条件 
19             count += check[k++];//记录每位数,用于验证回文 
20         }
21         
22         if (count == n)
23         {
24             for (j=0 ; j<k ; j++)//判断是否回文 
25             {
26                 if (check[j] != check[k-1-j])
27                     break;
28             }
29             
30             if (j==k)//输出回文 
31             {
32                 res ++;
33                 printf("%d\n",i);
34             }                        
35         }
36     }
37     
38     if (res == 0)
39         printf("-1");
40         
41     return 0;
42 }
C解法

 

解题思路:

对数字取余获得每一位,并记录以及累计其和

1.判断和是否等于n

2.判断是否为回文

满足以上条件则输出数字

posted on 2019-03-21 16:15  WooKinson  阅读(111)  评论(0编辑  收藏  举报