1、題目地址
https://pintia.cn/problem-sets/17/problems/260
2、題目條件
輸入格式:
輸入在一行給出1個正整數(shù)N(≤1000)和一個符號,中間以空格分隔。
輸出格式:
首先打印出由給定符號組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號數(shù)。
輸入樣例:
19 *
3、代碼
import java.util.Scanner;
public class sand {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int count = 0;
String tag = "";
try {
while (in.hasNext()) {
count = in.nextInt();
tag = in.next();
break;
}
} catch (NullPointerException ex) {
}
sand(count,tag);
}
public static void sand( int count , String tag) {
int tempCount = 0;
int tempRows = 0;
int max = 0;
int outPutCount = 0;
for( int i = 1 ; tempCount <= count+1 ; i++ ) {
max = (2*i-1);
tempCount += max*2;
tempRows = i;
}
if( count > 1) {
tempRows -=1;
max-=2;
}
for( int i =0; i< tempRows-1 ; i++) {
for( int j = 0 ; j < i ; j++) {
System.out.print(" ");
}
for( int j = 0 ; j < max-2*i ; j++) {
System.out.print(tag);
outPutCount++;
}
System.out.println();
}
for( int i = tempRows; i >0 ; i--) {
for( int j = 1 ; j < i ; j++) {
System.out.print(" ");
}
for( int j = 0 ; j < max-2*(i-1) ; j++) {
System.out.print(tag);
outPutCount++;
}
System.out.println();
}
System.out.print(count-outPutCount);
}
}
4、問題及總結
- 輸出格式問題
輸出格式在正常輸出的符號后,增加了多余空格,導致結果檢查通不過,報格式錯誤。 - 最小值問題
本機編寫代碼時沒有關注邊界問題,這里是簡單對邊界添加了保護。 - 數(shù)學公式
這里沒有使用數(shù)學公式,是自己計算的行數(shù),有參考其他人做法,使用java數(shù)學公式更為簡單。