zoukankan      html  css  js  c++  java
  • 【蓝桥杯】历届试题 回文数字

      历届试题 回文数字 
    时间限制: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
     
     
    Java源代码:
     1 import java.util.Scanner;
     2 
     3 public class Main {
     4 
     5     public static void main(String[] args) {
     6         Scanner sc = new Scanner(System.in);
     7         int n = sc.nextInt();
     8         int[] a = new int[7];
     9         a[4] = 1;
    10         boolean flag = false;
    11         while (a[6] != 1) {
    12             int k = 6;
    13             while (a[k] == 0)
    14                 k--;
    15             boolean isHws = true;
    16             for (int i = 0; i <= k; i++)// 搜索回文数
    17             {
    18                 if (a[i] != a[k - i]) {
    19                     isHws = false;
    20                     break;
    21                 }
    22             }
    23             if (isHws)// 如果是回文数则看各位和是否等于N
    24             {
    25                 int sum = 0;
    26                 for (int i = 0; i <= k; i++)
    27                     sum += a[i];
    28                 if (sum == n) {
    29                     for (int i = 0; i <= k; i++)
    30                         System.out.print(a[i]);
    31                     System.out.println();
    32                     flag = true;
    33                 }
    34             }
    35             a[0]++;
    36             k = 0;
    37             while (a[k] >= 10)// 可以理解为“进位”
    38             {
    39                 a[k] -= 10;
    40                 a[k + 1]++;
    41                 k++;
    42             }
    43         }
    44         if (!flag)
    45             System.out.println("-1");
    46     }
    47 
    48 }
    评测点序号评测结果得分CPU使用内存使用下载评测数据
    1 正确 20.00 296ms 24.29MB 输入 输出
    2 正确 20.00 296ms 25.37MB 输入 输出
    3 正确 20.00 234ms 23.78MB 输入 输出
    4 正确 20.00 249ms 23.96MB 输入 输出
    5 正确 20.00 171ms 23.86MB 输入 输出
     
  • 相关阅读:
    (01)Docker简介
    Gym-101242B:Branch Assignment(最短路,四边形不等式优化DP)
    2019牛客暑期多校训练营(第三场)G: Removing Stones(启发式分治)
    POJ
    高维前缀和
    HDU
    BZOJ
    HDU
    POJ
    Gym-100648B: Hie with the Pie(状态DP)
  • 原文地址:https://www.cnblogs.com/wuqianling/p/5359626.html
Copyright © 2011-2022 走看看