题目描述
问题描述本题目要求你在控制台输出一个由数字组成的等腰三角形。
具体的步骤是:先用1,2,3,…的自然数拼一个足够长的串
用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。
比如,当三角形高度是8时:12 13 84 15 76 17 6
891011121314151
1
2
3
4
5
6
7
8
显示不正确时,参看:p1.png资源约定峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms输入格式一个正整数n(3<n<300),表示三角形的高度
为了便于测评,我们要求空格一律用"."代替。输出格式用数字填充的等腰三角形。测试样例1Input:
5Output:
....1
...2.1
..3...2
.4.....1
567891011
1
2
3
4
5
6
7
8
9
测试样例2Input:
10Output:
.........1
........2.2
.......3...2
......4.....2
.....5.......1
....6.........2
...7...........0
..8.............2
.9...............9
1011121314151617181
1
2
3
4
5
6
7
8
9
10
11
12
13
14
测试样例3Input:
15Output:
..............1
.............2.3
............3...2
...........4.....3
..........5.......1
.........6.........3
........7...........0
.......8.............3
......9...............9
.....1.................2
....0...................8
...1.....................2
..1.......................7
.1.........................2
21314151617181920212223242526
思路分析
找规律
代码实现
package TEST;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();//计算等腰三角形总共需要多少数字int sum=4*n-4;//int sum = 1 + (n - 1) * 2 + (2 * n - 3);String str="";for (int i = 1; str.length() < sum; i++) {str=str+String.valueOf(i);}char[] ch = str.substring(0, sum).toCharArray();//打印第一行for (int i = 0; i < n-1; i++) {System.out.print(".");}System.out.println(1);//打印2到n-1行for (int i = 1; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {System.out.print(".");}System.out.print(ch[i]);for (int j = 0; j < i*2-1; j++) {System.out.print(".");}System.out.println(ch[sum-i]);}//打印最后一行4*n-4-(n-2)=3*n-2for (int i = n-1; i < 3*n-2; i++) {System.out.print(ch[i]);}}}