輸入星號總數 N,輸出倒三角形,星號總數恰為 N。第一行星號數由 N 反推。
倒三角形前 k 行星號總和:`S(k) = k*(2*first - (k-1))/2` (等差數列,公差 -2)。
若要求完整倒三角 (最後一行 1 或 2 顆),可解方程求行數。題目允許最後一行不完整。
#include
#include
using namespace std;
int main() {
int n; cout << "請輸入*總數: "; cin >> n;
if (n <= 0) return 0;
// 估算完整行數 det = floor((-1 + sqrt(1+8n))/2)
int det = (int)((-1 + sqrt(1 + 8.0*n)) / 2);
int lastRow = n - det*(det+1)/2; // 最後一行星號數 (可能不完整)
// 輸出最後一行 (最底行)
for (int i=0; i
代碼先輸出不完整的底行,再輸出上方完整行,確保總星號數 = n。頭文件自行添加 `