回文数、维密、约瑟夫环

回文数

问题描述:

123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。

输入格式:

输入一行,包含一个正整数n。

输出格式:

按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入:

52

样例输出:

899998

989989

998899

数据规模和约定

1<=n<=54。

分析:

利用回文数性质:(五位)abcba或(六位)abccba

直接输出,不排序

数组保存,不知道多少个(下下策)

集合保存,集合排序(要求高,代码乱)

集合保存,转为数组,排序输出(要求较高,推荐)

package bb;
import java.util.*;
public class 回文数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n;
// 回文数性质:(五位)abcba
// 或(六位)abccba
int a, b, c;
n = sc.nextInt();
List<Integer> lst = new ArrayList<Integer>();
for (a = 1; a <= 9; a++) {
for (b = 0; b <= 9; b++) {
for (c = 0; c <= 9; c++) {
if (a + b + c + b + a == n) {
Integer it = Integer.valueOf("" + a + b + c + b + a);
lst.add(it);
}
if (2 * (a + b + c) == n) {
Integer it = Integer.valueOf("" + a + b + c + c + b + a);
lst.add(it);
}
}
}
}
Integer[] arr = new Integer[lst.size()];
lst.toArray(arr);
Arrays.sort(arr);
for (Integer integer : arr) {
System.out.println(integer);
}
sc.close();
}
}

维密

美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。

他曾在1935~1936年应邀来中国清华大学讲学。

一次,他参加某个重要会议,年轻的脸孔引人注目。

于是有人询问他的年龄,他回答说:

“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”

请你推算一下,他当时到底有多年轻。

package bb;
import java.util.HashSet;
public class 维密 {
public static void f1() {
for (int i = 1; i < 100; i++) {
// 年龄的4次方是个6位数
int i3 = (int) Math.pow(i, 3);
int i4 = (int) Math.pow(i, 4);
if (("" + i3).length() == 4 && ("" + i4).length() == 6) {
// 这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。
String i10 = "" + i3 + i4;
char[] charArray = i10.toCharArray();
HashSet<Character> hashSet = new HashSet<Character>();
for (char c : charArray) {
hashSet.add(c);
}
if (hashSet.size() == 10) {
System.out.println(i);
}
} else {
continue;
}
}
}
public static void main(String[] args) {
f1();
}
}

约瑟夫环

1)10人围一圈

2)从1开始报数,凡是报到3的人被淘汰,然后再从下一个人继续数下去,直到最后只剩下一个人为止

3)输出最后一个人的编号

题目

package bb;
import java.util.Vector;
public class 约瑟夫环 {
public static void main(String[] args) {
Vector<Integer> a = new Vector<Integer>();
for (int i = 0; i < 10; i++) {
a.add(i + 1);
}
for (;;) {
if (a.size() == 1) {
break;
}
for (int i = 0; i < 2; i++) {
a.add(________________);// ←填空
}
a.remove(0);
}
System.out.println(a);
}
}

解析:

package bb;
// 以列表模拟循环队列:首接尾
// 1,2,3,4,5,6,7,8,9,10
// 第一轮:1,2[删3]4,5,6,7,8,9,10,1,2...(循环:10数完了就该数1,2)
// 第二轮:1,2[删3]4,5[删6]7,8,9,10,1,2,4,5...(循环:10数完了就该数1,2,4,5)
// 跳两个,删第3个(跳的两个,接到列表最后:其实是模拟循环--首接尾)
import java.util.Vector;
public class 约瑟夫环 {
public static void main(String[] args) {
Vector<Integer> a = new Vector<Integer>();
for (int i = 0; i < 10; i++) {
a.add(i + 1);
}
for (;;) {
if (a.size() == 1) {
break;
}
for (int i = 0; i < 2; i++) {
a.add(a.remove(0));// ←填空(一句分为两句更好理解)
}
a.remove(0);
}
System.out.println(a);
}
}

最新文章

  1. Unity游戏内版本更新
  2. USB_HID读写上位机VC++
  3. spring mvc基础配置
  4. A daemon process class in python
  5. 常用HTML转义字符,
  6. Java实现 Base64、MD5、MAC、HMAC加密
  7. 开源通讯组件ec
  8. Struts2框架的基本使用(三)
  9. logstash结合zabbix报警安装部署
  10. 学习笔记︱深度学习以及R中并行算法的应用(GPU)
  11. Scala:类,对象和特征(接口)
  12. MySQL随笔(2)
  13. Sublime Text 执行后只有运行时间,没有执行结果!解决方法!
  14. vue实现筛选功能,文字选中变色
  15. Hibernate持久化
  16. 扩展saltstack组件
  17. Linux命令(十) 在文件或目录之间创建链接 ln
  18. IOS私有API的使用(转)
  19. 浏览器地址栏中加入ico图标的二种方法
  20. 快速搭建微信小程序开发环境

热门文章

  1. sqlsugar入门(1)-初识sugar正确打开sugar的方式
  2. 云计算之路-出海记:蹭一张 aws 船票
  3. Java学习的第二十六天
  4. 【新阁教育】穷学上位机系列——搭建STEP7仿真环境
  5. Photoshop CC 习惯设置
  6. day86:luffy:前端发送请求生成订单&amp;结算页面优惠劵的实现
  7. Spider_知识目录_基础
  8. VBA_headers_mapping
  9. 2020 中国.NET 开发者峰会正式启动
  10. 【JVM第四篇--运行时数据区】堆