您的位置:首页 > 其它

算法题练习系列之(一):守形数

2017-06-22 10:08 211 查看
-----------------------------------------------------------------------------------------------------------

时间限制:1秒  空间限制:32768K

-----------------------------------------------------------------------------------------------------------

题目描述

守形数是这样一种整数,它的平方的低位部分等于它本身。 比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。

输入描述:
输入包括1个整数N,2<=N<100。

输出描述:
可能有多组测试数据,对于每组数据,

输出"Yes!”表示N是守形数。

输出"No!”表示N不是守形数。

输入例子:
25

4

输出例子:
Yes!

No!

-----------------------------------------------------------------------------------------------------------

[b]实现思路:[/b]

(1).取一个数的平方,可以通过字符串方式进行截取后比较是否一致;

(2).也可以对平方后的数据对10取余,得到处理后的数,与原数据进行比较;

(3).需要注意的是,题目给出的定义并不很明确,需要考虑数字的位数。

-----------------------------------------------------------------------------------------------------------

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String n = scan.next();
if(isShouXingShu(n)){
System.out.println("Yes!");
}else{
System.out.println("No!");
}
}

}

public static boolean isShouXingShu(String num){
if(num == null || num.isEmpty()){
return false;
}
long n = (long)Math.pow(Double.parseDouble(num),2);
String m = String.valueOf(n);
if(m.length() > 1 && m.length() < 3){
m = String.valueOf(n).substring(m.length()-1);
}else if(m.length() >= 3){
m = String.valueOf(n).substring(m.length()-2);
}
if(num.equals(m)){
return true;
}
return false;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 ACM 算法题练习