Java蓝桥杯试题集之基础练习6-9 ---- 杨辉三角形、 特殊的数字、回文数、特殊回文数
目录
杨辉三角形
解题思路
这个题主要是这句话最重要。使用二维数组非常方便简洁。不会存在数组越界的问题。看代码~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int a[][] = new int[n][n];
for (int i = 0; i < n; i++) {
// 对首位的1进行输出
a[i][0] = 1;
System.out.print(a[i][0] + " ");
// 对本行其余位数进行计算
for (int j = 1; j <= i; j++ ) {
a[i][j] = a[i-1][j-1] + a[i-1][j];
System.out.print(a[i][j] + " ");
}
// 输出换行
System.out.println();
}
}
}
特殊的数字
解题思路
粗暴的循环一遍。。
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 100; i < 1000; i++) {
if(Math.pow(i%10, 3) + Math.pow(i/10%10, 3) + Math.pow(i/100, 3) == i) {
System.out.println(i);
}
}
}
}
回文数
解题思路
这题也直接循环比较~
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1000; i < 10000; i++) {
if (i / 1000 == i % 10 && i / 100 % 10 == i / 10 % 10) {
System.out.println(i);
}
}
}
}
特殊回文数
解题思路
这题较前两题比较特殊,要求的是五位和六位的十进制数是否符合条件,由于我认为将int型数字%10啊这种太过麻烦,所以将int型数字转换成了char数组,对数组的位数进行了比较。因为要求位数之和,所以又-‘0’转成数字。可能耗时长了点,但是也把各种转换复习了一遍。。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for (int i = 10000; i < 1000000; i++) {
// 先把int型转换成string再转成char数组,方便比较位数是否符合要求
char[] j = String.valueOf(i).toCharArray();
// 这里的第三个判断比较巧妙,不管是5位数还是6位数都可以使用
if (j[0] == j[j.length-1] && j[1] == j[j.length-2] && j[2] == j[j.length-3]) {
// 在符合位数中再查找==n的,这里将char型-‘0’转换成int计算。
int sum = 0;
for (int k = 0; k < j.length; k++) {
sum += j[k] - '0';
}
if (sum == n) System.out.println(i);
}
}
}
}
希望我的记录能够帮到你~ 喜欢请点赞!
谢谢你看到这里!写作仓促,有疏漏之处还请评论指正,共同探讨进步!