- 输入一个四个数字组成的整数 n,你的任务是数一数有多少种方法,恰好修改一个数字,把它 变成一个完全平方数(不能把首位修改成 0)。比如 n=7844,有两种方法:3844=62^ 2 和 7744=88^2
输入输出描述
输入格式
输入第一行为整数 T (1<=T<=1000),即测试数据的组数,以后每行包含一个整数 n (1000<=n<=9999)。
输出格式
对于每组数据,输出恰好修改一个数字,把 n 变成完全平方数的方案数。
编程要求
根据提示,在右侧编辑器补充代码,根据要求满足输入输出。
测试说明
平台会对你编写的代码进行测试:
样例输入
2
7844
9121
样例输出
Case 1: 2
Case 2: 0
import java.util.Scanner;
public class T1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
int number[] = new int[T];
for (int i = 0; i < number.length; i++) {
number[i] = scanner.nextInt();
}
int count = 0;
int a[] = new int[6];
int b[] = new int[6];
for (int i = 0; i < number.length; i++) {
int sum =0;
a[0] = (number[i] / 1000) % 10;
a[1] = (number[i] / 100) % 10;
a[2] = (number[i] / 10) % 10;
a[3] = number[i] % 10;
for (b[0] = 1; b[0] < 10; b[0]++) {
for (b[1] = 0; b[1] < 10; b[1]++) {
for (b[2] = 0; b[2] < 10; b[2]++) {
for (b[3] = 0; b[3] < 10; b[3]++) {
int f=0;
if(b[0]==a[0]){f++;}
if(b[1]==a[1]){f++;}
if(b[2]==a[2]){f++;}
if(b[3]==a[3]){f++;}
if(f==3){
int x =b[0]*1000+b[1]*100+b[2]*10+b[3];
int flag = work(x);
if(flag==1){
sum++;
}
}
}
}
}
}
System.out.println(sum);
}
}
public static int work(int x){
int y=(int)Math.sqrt(x);
if(y*y==x){
return 1;
}else
return 0;
}
}