特殊的回文数 ---蓝桥杯(java版)

特殊的回文数 —蓝桥杯(java版)

题目描述

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。

import java.util.Scanner;

public class Main {
   public static void main (String []args) {
	   Scanner sc=new Scanner(System.in);
	   int n=sc.nextInt();
	   //五位十进制数
	   for(int i = 10000;i < 100000;i++) {
		   int a=i%10;
		   int b=i/10%10;
		   int c=i/100%10;
		   int d=i/1000%10;
		   int e=i/10000%10;
		   if(n==a+b+c+d+e) {
			   if(a==e&&b==d) {
			       StringBuffer sb=new StringBuffer();  //本意是 将int类型的数转换为字符串类型 方便拼接
				   sb.append(a);
				   sb.append(b);
				   sb.append(c);
				   sb.append(d);
				   sb.append(e);
				   System.out.println(sb.toString());
			   }
		   }
	   }
		  //六位十进制数
	   for(int i = 100000;i < 1000000;i++) {
		   int a=i%10;
		   int b=i/10%10;
		   int c=i/100%10;
		   int d=i/1000%10;
		   int e=i/10000%10;
		   int f=i/100000%10;
		   if(n==a+b+c+d+e+f) {
			   if(a==f&&b==e&&c==d) {
			       StringBuffer sb=new StringBuffer();
				   sb.append(a);
				   sb.append(b);
				   sb.append(c);
				   sb.append(d);
				   sb.append(e);
				   sb.append(f);
				   System.out.println(sb.toString());
			   }
		   }
	   }
   }
}

//没有大差 本质相同
import java.util.Scanner;
public class Main {
   public static void main (String []args) {
	   Scanner sc=new Scanner(System.in);
	   int n=sc.nextInt();
	   for(int i = 10000;i < 100000;i++) {
		   int a=i%10;
		   int b=i/10%10;
		   int c=i/100%10;
		   int d=i/1000%10;
		   int e=i/10000%10;
			   if(n==a+b+c+d+e && a==e&&b==d) {
				      String f=a+""+b+""+c+""+d+""+e;
				      System.out.println(f);
			   }
	   }		
		  for(int i = 100000;i < 1000000;i++) {
			  int a=i%10; 
			  int b=i/10%10;
			  int c=i/100%10;
			  int d=i/1000%10;
			  int e=i/10000%10;
			  int f=i/100000%10;
			  if(n==a+b+c+d+e+f && a==f&&b==e&&c==d) {
				  String g=a+""+b+""+c+""+d+""+e+""+f;
				  System.out.println(g);
				  }
			  }
	    }
	  }

引用方法:
public StringBuilder append(int i) 将int参数的字符串表示法附加到此序列

如果想要简单的实现数字的拼接可以

int a=2;
int b=5;
String c=a+""+b;
System.out.println(c);    

拓展StringBuffer 与 StringBuilder
StringBuffer的主要方法:(他们被重载以便接受任何类型的数据)
append():在尾部添加
insert():在指定位置添加
如果 StringBuffer sb=new StringBuffer();
则sb.append(x)=sb.insert(sb.length(), x)。
StringBuffer:主要就是可变字符序列,字符缓冲区就像一个String,但可以修改。在任何时间点,它包含一些特定的字符序列,但可以通过某种方法调用来更改序列的长度和内容。

VS

StringBuilder(在可能的情况下,建议使用这个类别优先于StringBuffer ,因为它在大多数实现中将更快.)
主要方法:(他们是重载的,以便接受任何类型的数据)
append():在构造器的末尾添加
insert():在指定位置添加
每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入字符串构建器。每个字符串构建器都有一个容量。 只要字符串构建器中包含的字符序列的长度不超过容量,则不需要分配新的内部缓冲区。 如果内部缓冲区溢出,则会自动变大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值