一、题目:
“同构数”是指这样一种数,这个数右端的数平方后会得到这个数本身。
例如,5是25 右边的数,25是625右边的数,25和625都是同构数。找出a ~ b之间全部同构数。
Input
有多组数据,第一行一个正整数t(t<100)表示输入数据组数,接下来有t组输入数据,每组数据占一行,
包含两个整数a、b,0<=a<=b<=1000000。
Output
对于一组数据,输出可能有多个,每一组输出占一行,不要输出多余空格。
Sample Input
1
1 100
Sample Output
1 25 36
Hint
5776 = 76 * 76 也是同构数
二、解题分析:(超级重要)
1、仔细读题理解 “同构数”的概念
2、不能用 int , 因为 int 范围是10e9,当遍历时去判断符合条件的数时,相乘就会爆掉。
3、a 和 b 的范围是在 0 到 100万,暴力解决时要注意 0 也是一个 同构数
4、思路:① 可以找到 0 到 100万之间所有的同构数,打表存储,之后在给定的范围 a ~~ b中塞选属于此范围的数存到一个新的数组, 再输出。
② 枚举暴力,不打表,直接将0~~100万之间的数存在数组中,之后塞选存到新的数组,再输出。
三、代码: