java . 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。

 1 import java.util.HashMap;
 2 import java.util.Map;
 3 import java.util.Map.Entry;
 4 //请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,
 5 //又有两位数字相同,如:144,676。
 6 public class wqs {
 7
 8     //完全平方数
 9     public static boolean iswqs(int n){
10         int i;
11         double dn=Math.sqrt(n);
12         if(dn-(int)dn==0)
13             return true;
14         return false;
15     }
16     //判断只有两位相同
17     public static boolean twoSame(int n){
18     Map<Integer,Integer>map=new HashMap<Integer,Integer>();
19         while(n>0){
20             int n1=n%10;
21 //            System.out.print(n1);
22             if(map.containsKey(n1))
23             {
24                 int val=map.get(n1);
25                 map.put(n1,val+1);
26             }
27             else
28                   map.put(n1, 1);
29             n=n/10;
30         }
31 //        System.out.print(map);
32         for(Entry<Integer,Integer>en:map.entrySet())
33         {
34             if(en.getValue()==2){
35                 return true;
36             }
37         }
38
39         return false;
40     }
41
42     public static void main(String[] args) {
43     int i;
44         for(i=2;i<99999;i++){
45             if(twoSame(i)&&iswqs(i)){
46                 System.out.println(i+" ");
47             }
48         }
49     }
50
51 }
时间: 2024-11-03 22:08:48

java . 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。的相关文章

java循环练习:把100——200中不能被3整除的数输出,每四个换一行输出

package com.eduask.circulationDemo; /*  *   * 1.把100--200中不能被3整除的数输出,每四个换一行输出  */ public class testDemo01 { public static void main(String[] args) { int j = 0; for(int i=100; i<=200; i++){ if (i%3 != 0) { j++; System.out.print(i+"  "); if (j%

无序数组中找第k大的数

类快排算法 由于只要求找出第k大的数,没必要将数组中所有值都排序. 快排中的partition算法,返回key在数组中的位置的cnt(相对于left的偏移量),如果cnt正好等于k,那么问题则得到解决:如果cnt小于k,去左边找第k个:如果cnt>k,则去右边找第k-cnt个.直到key的位置等于k-1,则找对问题的解. /*快排中的划分算法*/ int partition(int* input, int low, int high) { int tmp = input[low]; // 取一个

C++中如何在顺序容器中删除符合特定条件的元素

以前很少做删除操作,vector一直当成数组用,而实际追求效率时又经常舍弃vector选用C风格数组.看<C++ Primer>到顺序容器删除这节时试着实现课后习题结果一动手我就出错了. 习题是将数组int ia[]拷贝到std::vector<int>中,并删除偶数元素. 先给出我的错误代码 int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 }; vector<int> v(begin(ia), end(ia)); fo

int类型数组中找出现几次的数的题目总结

1.     题目1:int类型数组中除了一个数出现一次以外,其他数都出现两次,求该数. [分析]全部异或运算即可. 2.     题目2:int类型数组中除了两个数出现一次以外,其他数都出现两次,求这两个数. 参考:http://zhedahht.blog.163.com/blog/static/2541117420071128950682/ [分析]:全部亦或之后得到的数为resultExclusiveOR,找到它的第一个不是0的位,然后将数组按这个位是否为0分成两组,组内全部亦或即可. /

【数据库】【算法】从一串数据中获取符合某个条件的时间区间

算法背景 在项目中,经常要看到这么一个要求:从一组根据时间排列的数据,要求计算出其中满足某个条件的一串数据,求这串数据的开始与结束时间. 比如说,用小米手环采集到一组用户的心率数据,要求算出其中有多长时间用户的心率>100. 比如说,通过Gps定位获取到车辆的行驶数据,按要求速度超过80就算超速,那么在这组数据中,车辆超速了多长时间. 在数据采集非常方便的时代,像以上的场景及需求比比皆是. 要算出所要求的结果,当然可以写个计算器,一条一条分析过去,但是这样的话效率非常慢. 更多时候还是要求在数据

快乐数(编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和, 然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1, 那么这个数就是快乐数。)

示例: 输入: 19 输出: true 解释: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 public static boolean isHappy(int n) { boolean flag = true; //用来添加每次计算后的结果 List<Integer> list = new ArrayList<Integer>(); while(n!=1) { //计算数字长度 String s

iOS中UITextField输入判断小数点后两位

在输入金额的UITextField中,要给予三个规则的判断 1. 只能输入数字(可以通过设置键盘类型为Decimal Pad) 2. 小数点只能有一个 3. 小数点后最多有两位数字 (可以通过正则表达式或者长度判断) 2. 和3. 的代码 (首先引入UITextFieldDelegate,指定代理为自己) - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacem

给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。

ccf认证考试2013年12月第一题 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, -, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10

Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制--转载

多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言.核心类库包含一个 Thread 类,可以用它来构建.启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 ——synchronized 和 volatile .在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变得更容易了. synchronized 快速回顾 把代码块声明为 synchronized,有两个重