蓝桥杯:排它平方数-java
问题描述:
小明正看着 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的更多相关文章
- 排它平方数|2013年蓝桥杯A组题解析第二题-fishers
排它平方数 小明正看着 203879 这个数字发呆. 原来,203879 * 203879 = 41566646641 这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是 ...
- Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
问题描述 当输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi ...
- 蓝桥杯 0/1背包问题 (java)
今天第一次接触了0/1背包问题,总结一下,方便以后修改.不对的地方还请大家不啬赐教! 上一个蓝桥杯的例题: 数据规模和约定 代码: import java.util.Scanner; public ...
- 算法笔记_083:蓝桥杯练习 合并石子(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子 ...
- 算法笔记_076:蓝桥杯练习 结点选择(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值.如果一个点被选择了,那么在树上和它相邻的点都不能被选择.求选出的点的权值和最大是多 ...
- 算法笔记_064:蓝桥杯练习 操作格子(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 有n个格子,从左到右放成一排,编号为1-n. 共有m次操作,有3种操作类型: 1.修改一个格子的权值, 2.求连续一段格子权值和, 3.求 ...
- 蓝桥杯之K好数
如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.3 ...
- 蓝桥杯-加法变乘法(java)
蓝桥杯第六届省赛题目-加法变乘法(java) 题目: 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+... ...
- 算法笔记_077:蓝桥杯练习 K好数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4, ...
随机推荐
- python第一部分小结
1.python的种类 Cpython: ...
- ZOJ 1610 Count the Colors(线段树,区间覆盖,单点查询)
Count the Colors Time Limit: 2 Seconds Memory Limit: 65536 KB Painting some colored segments on ...
- python 谈赋值和copy区别
1变量赋值 a=1 b=a b=1 a=3 b还是等于1 2,列表赋值 嵌套列表情况 如果想让列表单独出来怎么办呢 ,这时候用到copy 如果列表嵌套列表情况 还是一样的, 如果想深度copy imp ...
- jquery 操作select,checkbox,radio (整理)
在工作中经经常使用到select,checkbox,radio,今天有点空暇就整理一下,免得以后用的时候还要又一次找. 操作select下拉框 -- 获取值或选中项: 1, $("#sele ...
- 各种设备在linux中的文件名
各种设备在linux中的文件名: 设备 设备在linux内的文件名 ide硬盘 /dev/ha[a-d] scs硬盘 /dev/sd[a-p] u盘 /dev/sd[a-p](与SAT ...
- dubbo构建应用
1.Dubbo介绍 Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成. 2.Dubbo原理 是不是看着 ...
- JavaScript深入之类数组对象与arguments(转载)
类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: var array = ['name', 'age', 'sex']; var arrayLike = { ...
- Nginx学习总结(一)
Nginx是目前比较主流的HTTP反向代理服务器(其企业版提供了基于TCP层的反向代理插件),对于构建大型分布式web应用,具有举足轻重的作用.简单来说,nginx有2个主要的功能:动/静态资源分离. ...
- Gene Ontology (GO) 注释
Gene Ontology (GO) 注释 Posted on 2017-06-11 | In 生信 相似的基因在不同物种中,其功能往往保守的.显然,需要一个统一的术语用于描述这些跨物种的同源基因 ...
- 通俗理解BiLSTM-CRF命名实体识别模型中的CRF层
虽然网上的文章对BiLSTM-CRF模型介绍的文章有很多,但是一般对CRF层的解读比较少. 于是决定,写一系列专门用来解读BiLSTM-CRF模型中的CRF层的文章. 我是用英文写的,发表在了gith ...