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

来源:互联网 发布:刷会员的软件 编辑:程序博客网 时间:2024/05/01 19:06

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

时间限制: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;}}


原创粉丝点击