蓝桥杯-------基础训练--特殊回文数,特殊的数字,回文数(JAVAdaima)
来源:互联网 发布:职业医师考试数据库 编辑:程序博客网 时间:2024/05/16 11:03
一、特殊回文数
问题描述:123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
解题思想:这个题要求的搜索范围很大,要求写出所有满足条件的五位和六位十进制数。而满足条件的限定:【第一个位数】乘以2+【第二个位数】乘以2+【第三个位数】乘以2等于n的值;或者第一个位数】乘以2+【第二个位数】乘以2+【第三个位数】等于n的值即可。而且这道题有一个最让人讨厌的点就是:“按从小到大的顺序输出满足条件的整数,每个整数占一行” 涉及到了排序。所以我使用了ArrayList数组,它可以创建一个对象,然后向数组中添加数据,最后再利用Collections类的sort()方法对ArrayList数组的对象进行排序即可满足题目的要求。其实实现搜索范围时,也用到了我的另一篇博客:有关全排列的知识。下面给出相应代码:
import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;public class 特殊回文数 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int n = sc.nextInt();ArrayList<Integer> rs = new ArrayList<Integer>(); for(int i = 1;i<10;i++)for(int j = 0;j<10;j++)for(int k = 0;k<10;k++){if(2*i+2*j+k==n)rs.add(i*10000+j*1000+k*100+j*10+i);if(2*i+2*j+2*k==n)rs.add(i*100000+j*10000+k*1000+k*100+j*10+i);}Collections.sort(rs); for(int i = 0; i<rs.size();i++){System.out.println(rs.get(i));}}}
上面代码就是将我上文所说的解题思想代码化的结果。
二、特殊的数字
问题描述:153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。按从小到大的顺序输出满足条件的三位十进制数。
解题思想:其实算法竞赛的人都做过这个题,他有一个别名叫水仙花数,需要满足的条件就是每个位数的3此方求和即为该数本身。与上一题类似,搜索仍然采用全排列的方式,而限定的条件:【第一个位数】的3此方+【第二个位数】的3此方+【第三个位数】的3此方=该数本身。而可变数组与排序均采用上文提到的ArrayList数组,以及Collection类的sort()方法进行实现的。
下面给出解题代码:
import java.util.ArrayList;import java.util.Collections;public class 特殊的数字 {public static void main(String[] args) {ArrayList<Integer> rs = new ArrayList<Integer>(); for(int i = 1;i<10;i++)for(int j = 0;j<10;j++)for(int k = 0;k<10;k++){if(i*i*i+j*j*j+k*k*k==i*100+j*10+k){rs.add(i*100+j*10+k);}}Collections.sort(rs);for(int i = 0; i<rs.size();i++){System.out.println(rs.get(i));}}}
三、回文数
问题描述:1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。按从小到大的顺序输出满足条件的四位十进制数。
解题思想:其实与前两个题的方法完全是一样的,还是限定条件:【第一个位数】乘以2+【第二个位数】乘以2=该数本身。此处就不做更多的解释了。下面给出解题代码:
import java.util.ArrayList;import java.util.Collections;public class 回文数 {public static void main(String[] args) {ArrayList<Integer> rs = new ArrayList<Integer>();for(int i = 1; i < 10; i++){for(int j = 0; j < 10; j++){rs.add(i*1000+j*100+j*10+i);}}Collections.sort(rs);for(int k = 0; k < rs.size(); k++){System.out.println(rs.get(k));}}}
若有疑问可留言!!!!!!!!!!
- 蓝桥杯-------基础训练--特殊回文数,特殊的数字,回文数(JAVAdaima)
- 蓝桥杯-基础训练-特殊的回文数(枚举)
- 蓝桥杯-特殊回文数&&特殊的数字
- 【蓝桥杯】【基础训练05】【特殊回文数】
- 2016蓝桥杯基础训练——特殊回文数
- 特殊的回文数
- 特殊的回文数
- 蓝桥杯 - 特殊回文数
- 蓝桥杯--特殊回文数
- 蓝桥杯 特殊回文数
- 蓝桥杯 特殊回文数
- 蓝桥杯特殊回文数
- 蓝桥杯 - 特殊回文数
- 蓝桥杯-特殊回文数
- 蓝桥杯-特殊回文数
- 蓝桥杯特殊回文数
- 【蓝桥杯】【特殊回文数】
- 蓝桥杯:特殊回文数
- 如何解决U盘拷贝时提示文件过大问题
- 朋友遇到一个面试题 转换人民币
- hutool工具类
- 背包问题
- Python培训(2)
- 蓝桥杯-------基础训练--特殊回文数,特殊的数字,回文数(JAVAdaima)
- 让PIP源使用国内镜像
- photoswipe实现图片放大功能在java中应用
- 正则表达式 验证是数字
- JAVA使用FTPClient类读写FTP
- java日期时间处理工具类
- 浏览器的重绘和重排
- 摘要算法
- Java 视频转码