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

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

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

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

题目描述

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

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

输出描述:
可能有多组测试数据,对于每组数据,
输出"Yes!”表示N是守形数。
输出"No!”表示N不是守形数。


输入例子:
25
4


输出例子:
Yes!

No!

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

实现思路:

(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;
	}

}


你可能感兴趣的:(算法题练习)