【问题描述】具有下面性质的数a称为"同构数":设b是a的平方,a与b的低若干位相同。例如,5是25的同构数,25是625的同构数.编程序满足如下要求: 输入两个整数a,b (0<=a, b<=99),找出a、b之间全部的同构数。 【输入形式】控制台输入0-99之间的两个整数a和b. 【输出形式】控制台上按照由小到大的顺序输出所有同构数.每一个整数占一行. 【样例输入】0 30 【样例输出】 0 1 5 6 25 【样例说明】在0-30之间的同构数有0, 1, 5, 6, 25.
老师真的太太太仁慈了,这题也没有需要学习的新知识点。 算法方面该题只需通过遍历a-b之间的数,然后判断是否满足同构条件即可,需要注意的是,要根据a的位数,取b得最后若干位进行比较。 代码如下:
package work3; import java.util.Scanner; public class tonggou { public static void main(String[] args) { Scanner input = new Scanner(System.in); int i = input.nextInt(); int j = input.nextInt(); int tem; for(int k =i;k<j;k++) { //从i开始循环直至k,这里不太严谨,题目没有给出是否包含j,在希冀运行也没问题 tem = k*k; if(k<10) { //若k为个位数 if(tem%10 == k) //取tem的个位 System.out.println(k); } else { //由于这里b<=99,故else即为k为两位数 if(tem%100 == k) System.out.println(k); } } } }运行结果如下: