蓝桥杯-基础练习-特殊回文数
2016-02-11 17:08
260 查看
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
测试输出:
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
import java.util.Scanner; public class Main { static Boolean a(int n) { int x = 0, r, o; o = n; while (n > 0) { r = n % 10; x = x * 10 + r; n = n / 10; } if (o == x) return true; else return false; }//判断是否为回文数 public static int b(int num1) { int a, b, c, sum; if (num1 > 99999) { a = num1 / 100000; b = num1 / 10000 % (a * 10); c = num1 / 1000 % (a * 100 + b * 10); sum = 2 * (a + b + c); } else { a = num1 / 10000; b = num1 / 1000 % (a * 10); c = num1 / 100 % (a * 100 + b * 10); sum = a + b + c + b + a; } return sum; }//把每一位相加得到和 public static void main(String[] args) { Scanner input = new Scanner(System.in); int num, in; in = input.nextInt(); for (num = 10000; num <= 999999; num++) { if (a(num) && b(num) == in) { System.out.println(num); } } } }
测试输出:
输入: 26 输出: 18881 19691 27872 28682 29492 36863 37673 38483 39293 45854 46664 47474 48284 49094 54845 55655 56465 57275 58085 63836 64646 65456 66266 67076 72827 73637 74447 75257 76067 81818 82628 83438 84248 85058 90809 91619 92429 93239 94049 139931 148841 157751 166661 175571 184481 193391 229922 238832 247742 256652 265562 274472 283382 292292 319913 328823 337733 346643 355553 364463 373373 382283 391193 409904 418814 427724 436634 445544 454454 463364 472274 481184 490094 508805 517715 526625 535535 544445 553355 562265 571175 580085 607706 616616 625526 634436 643346 652256 661166 670076 706607 715517 724427 733337 742247 751157 760067 805508 814418 823328 832238 841148 850058 904409 913319 922229 931139 940049 输入: 54 输出: 999999