数字哑谜

原创 2016年05月31日 11:34:26

题目描述:

abcdefghi分别表示1~9的不同的数字,ab可以被2整除,abc被3整除。。。。。。abcdefghi可以被9整除


代码:

import java.util.ArrayList;

public class yami {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for (int i = 111111111; i <= 999999999; i++) {
			int j, a = 10000000;
			for (j = 2; j <= 9; j++) {
				int b = i / a; // 依次获得N个高位组成的数字,例如123.第一次是1,第二次是12,第三次是123
				if (b % j != 0)
					break;
				a /= 10;
			}

			// 经过了初步筛选,此时的数字i包含重复的数字,需要继续筛选
			if (j == 10 && check(i))
				System.out.println(i);
		}

	}
//该函数主要是检查有没有重复的,若果重复则返回false
	private static boolean check(int x) {
		// TODO Auto-generated method stub
		int j = 1;

		String str = String.valueOf(x); // 将 x 的字符串形式保存在 str 中
		ArrayList<Integer> list = new ArrayList<Integer>(); // 该 list 用来检查 x 中的每一位是不是有相同的,如果不同就加入,否则直接返回

		for (int i = 9; i >= 1; i--) {
			int k = x / j; // 每次割掉数字的最后一个
			int yushu = str.charAt(i - 1) - '0'; // 获取被割掉的数字
			if (yushu == 0) { // 因为是1~9之内的数字,所以舍弃0
				return false;
			}
			if (!list.contains(yushu)) { // 如果不包含该数字则加入 list
				list.add(yushu);
			} else {
				return false;
			}
			
		}

		return true;
	}

}

测试结果:


版权声明:本文为博主原创文章,转载请注明地址。

相关文章推荐

《编程之美》4.10数字哑谜和回文

《编程之美》4.10数字哑谜和回文

编程之美:第四章 数字之趣 4.10数字哑谜和回文

/* 数字哑谜和回文: 1神奇的9位数。能不能找出符合如下条件的9位数: 这个数包括了1~9这9个数字; 这个9位数的前n位都能被n整除,若这个数表示为abcdefghi,则ab可以被2整除,abc可...

编程之美:第四章 数字之趣 4.10_2数字哑谜和回文

/* 2有这样一个乘法算式: 人过大佛寺*我=寺佛大过人 这里面每一个字都代表着一个数字,并且不同的字代表的数字不同,你能把这些数字都找出来吗? 输出: 21978*4=87912 */ #in...

哑谜机Enigma的研究(一)—— [转载] ENIGMA的兴亡

本篇将讲述密码学中著名的Enigma机的兴亡史。 文章来源于《三思·科学》电子杂志第二期,2001年8月1日。《三思·科学》现已停刊。 本人在阅读本篇文章后对一些错别字和词不达意处进行了校正,并重新进...

input校验数字且自动跳转下一个input框输入,监听backspace事件

在前一个输入框写值的时候,若是数字,光标自动跳转到下一个输入框。若是非数字,则不输入值。(自动匹配数字,监听文本框的值是否为数字);在删除后一个输入框的值的时候,光标自动跳转到前一个输入框。

区块链开发专题(数字货币通过什么特殊的软件进行运算)

区块链爱好者(QQ:53016353) 一:匿名特性 区块链运用了一种称之为“区块链”的技术实现了高水准的匿名特性,区块链是blockchain级别的混淆加密,可以非常好的保护用户隐私...

c编程:提示用户输入一个0—9的数字进行猜测电脑产生的随机数。一共有三次机会。

// //  main.c //  使用c语言进行编程: 题目:由电脑生成一个由0-9之间的随机数,提示用户也输入一个数字进行猜测。当猜测三次仍不中的时候结束程序。 编译环境:Xcode6.3...

[Phonegap+Sencha Touch] 移动开发45 Android数字证书

为Android应用程序签名步骤:  1.确保电脑上安装了JDK,因为我们将使用JDK自带的创建和管理数字证书的工具Keytool。在命令行下输入如下命令: keytool -ge...

小游戏——猜数字

简单的随机数应用

【剑指Offer】面试题29:数组中出现次数超过一半的数字

一:题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)