问题描述:  

  小明正看着 203879 这个数字发呆。原来,203879 * 203879 = 41566646641这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。具有这样特点的6位数还有一个,请你找出它!

再归纳一下筛选要求:
    1. 6位正整数
    2. 每个数位上的数字不同
    3. 其平方数的每个数位不含原数字的任何组成数位

第一种方法,用数学思想进行求解(两个集合并集的长度=集合1的长度+集合2的长度 => 两个集合的内容完全不同)
import java.util.HashSet;
import java.util.Set; public class Yi {
public static void main(String[] args) {
int t=0;
for (long i = 111111; i <= 999999; i++) {
if (i%10==1||i%10==5||i%10==6||i%10==0) {
continue;
}
if (fuhe(i,i*i)) {
t++;
System.out.println(i);
}
}
System.out.println(t);
} private static boolean fuhe(long i, long l) {
Set set = new HashSet();
Set se = new HashSet(); int a = geshu(set,i);
int b = geshu(se,l);
int c = geshu(set,l); if(a!=6){
return false;
}
a += b;
if (a==c) {
return true;
}
return false;
} private static int geshu(Set set, long i) {
set.add(i%10);
while (i/10!=0) {
i/=10;
set.add(i%10);
}
return set.size();
}
}

  注:第一种算法解释 203879*203879=41566646641

     a=203879不同数字个数为6

     b=41566646641 不同数字个数为4

     c=在203879的基础上添加41566646641 的不重复数字的个数

     如果 c=a+b 则证明此数字复合要求

第二种方法,用HashMap进行存储(用arrayList也可以,算法思想是一样的)
import java.util.HashMap;
public class 算法训练8月13号 {

	public void selectNum(){
for(long n = 100000; n <= 999999;n++){
if(isSelfRepeat(n)) //有相同的数字,则跳过
continue;
else if(isPingFangRepeat(n*n,n)){ //该数的平方中是否有与该数相同的数字
continue;
}
else{ //符合条件,则打印
System.out.println(n);
}
}
} public boolean isSelfRepeat(long n){
HashMap<Long,String> m=new HashMap<Long,String>();
//存储的时候判断有无重复值
while(n!=0){
if(m.containsKey(n%10)){ //判断Map集合对象中是否包含指定的键名
return true;
}
else{
m.put(n%10,"1");
}
n=n/10;
}
return false;
} public boolean isPingFangRepeat(long pingfang,long n){
HashMap<Long,String> m=new HashMap<Long,String>();
while(n!=0){
m.put(n%10,"1");
n=n/10;
} while(pingfang!=0){
if(m.containsKey(pingfang%10)){
return true;
}
pingfang=pingfang/10;
}
return false;
} public static void main(String args[]){
new 算法训练8月13号().selectNum();
}
}

  

转载请注明出处:http://www.cnblogs.com/xiaovw/p/7356222.html   

蓝桥杯:排它平方数-java的更多相关文章

  1. 排它平方数|2013年蓝桥杯A组题解析第二题-fishers

    排它平方数 小明正看着 203879 这个数字发呆. 原来,203879 * 203879 = 41566646641 这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是 ...

  2. Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法

    问题描述 当输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi ...

  3. 蓝桥杯 0/1背包问题 (java)

      今天第一次接触了0/1背包问题,总结一下,方便以后修改.不对的地方还请大家不啬赐教! 上一个蓝桥杯的例题: 数据规模和约定 代码: import java.util.Scanner; public ...

  4. 算法笔记_083:蓝桥杯练习 合并石子(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子 ...

  5. 算法笔记_076:蓝桥杯练习 结点选择(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值.如果一个点被选择了,那么在树上和它相邻的点都不能被选择.求选出的点的权值和最大是多 ...

  6. 算法笔记_064:蓝桥杯练习 操作格子(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有n个格子,从左到右放成一排,编号为1-n. 共有m次操作,有3种操作类型: 1.修改一个格子的权值, 2.求连续一段格子权值和, 3.求 ...

  7. 蓝桥杯之K好数

    如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.3 ...

  8. 蓝桥杯-加法变乘法(java)

    蓝桥杯第六届省赛题目-加法变乘法(java) 题目: 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+... ...

  9. 算法笔记_077:蓝桥杯练习 K好数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4, ...

随机推荐

  1. 返回与Table结构相同的DataTable副本

    /// <summary> /// 返回与Table结构相同的DataTable副本 /// </summary> public static DataTable getStr ...

  2. 攻防世界--logmein

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/a00849bb514c413f8a6526f6bb56c628 1.准备 得到信息 6 ...

  3. 09-python的面向对象

    # 1. 面向对象概述(ObjectOriented,OO) - OOP思想 - 接触到任意一个任务,首先想到的是任务这个世界的构成,是由模型构成的 - 几个名词 - OO:面向对象 - OOA:面向 ...

  4. H5中滚动到底部的事件

    问题:在H5中,我们有这样的需求:例如有列表的时候,滚动到底部时,需要加载更多. 解决方案:可以采用window的滚动事件进行处理 分析:如果滚动是针对整个屏幕而言的(不针对于某个界面小块),那么这个 ...

  5. elasticsearch 基础 —— Update By Query API

    Update By Query API 最简单的用法是_update_by_query在不更改源的情况下对索引中的每个文档执行更新.这对于获取新属性或其他一些在线映射更改很有用 .这是API: POS ...

  6. raw, SOCK_RAW - Linux IPv4 raw socket.

    总 览 #include <sys/socket.h> #include <netinet/in.h> raw_socket = socket(PF_INET, SOCK_RA ...

  7. 05.Linux-CentOS系统普通用户SSH远程问题

    问题:appuser用户SSH远程连接Linux服务器出现的问题: Connecting?to?localhost:22...Connection?established.To?escape?to?l ...

  8. 93-基于ATOM E3825的3U PXIe 主板控制器

    基于ATOM E3825的3U PXIe 主板控制器 一.板卡概述: 本主板采用intel ATOM 处理器 E3825 设计主板控制器,是一种低成本.低功耗解决方案.板卡采用Intel Bay Tr ...

  9. 初学Java 数值运算符

    import java.util.Scanner; public class DisplayTime { public static void main(String[] args) { Scanne ...

  10. HttpRunnerManager安装部署(centos7)

    一.安装python3环境 参考 二.安装依赖环境 根据根目录requirements.txt文件安装依赖,可以使用pip安装 #pip3 install -r requirements.txt 会遇 ...