奇妙的数字
这道题我用了Arrays.equals方法,就是如果两个数组完全相同,那么就返回true,否则返回false。不能用arr.equals,因为可能会比较地址。
public class Main{
public static void main(String[] args) {
char[] nums= {'0','1','2','3','4','5','6','7','8','9'};
for(int i=10;;i++) {
int two=i*i;
int tre=i*i*i;
char[]num=(two+""+tre).toCharArray();
Arrays.sort(num);
if(i==100)break;
if(Arrays.equals(nums, num)) {
System.out.println(i);
break;
}
}
}
}
当然了也可以一一比较是否是包含十个字符和长度为10
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
int a=i*i;
int b=i*i*i;
String str=a+""+b;
if((str.length()==10)&&(check(str))){
System.out.println(i);
}
}
}
public static boolean check(String str){
if(str.contains("1")&&
str.contains("2")&&
str.contains("3")&&
str.contains("4")&&
str.contains("5")&&
str.contains("6")&&
str.contains("7")&&
str.contains("8")&&
str.contains("9")&&
str.contains("0")){
return true;
}
return false;
}
}
答案69
打印大叉
一次遍历就可以了,想到了那个题目,【蓝桥杯2018Java】等腰三角形
还是找到规律就行,在遍历的时候就打印。这个规律也是可以直接试出来的,哈哈,三角形还是好打的。
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
int len=m+n-1;
char[][]map=new char[n][len];
for(int i=0;i<n;i++) {
for(int j=0;j<len;j++) {
if(j-m-i<0&&j>=i||len-j-i<=m&&i<len-j)
System.out.print('*');
else System.out.print('.');
}
System.out.println();
}
}
}
运行结果