C 1027 列印沙漏 (20 分)
阿新 • • 發佈:2021-11-30
原題
https://pintia.cn/problem-sets/994805260223102976/problems/994805294251491328
程式碼
#include <iostream> #include <vector> using namespace std; vector<int> vec; int main() { int total, i=1, sum = 0; char c; cin >> total >> c; //獲得實際列印的個數 if (total > 0) { vec.push_back(i); //中間的字元數 i = 3, sum = 1; while ((sum + i * 2) <= total) { sum += i * 2; vec.push_back(i); i += 2; } } //按vec數組裡的個數列印 for (int j = vec.size()-1; j >= 0; j--) { for(int i = 0; i < (vec[vec.size()-1]-vec[j])/2; i++)printf(" "); for (int i = 0; i < vec[j]; i++) printf("%c",c); printf("\n"); } for (int j = 1; j < vec.size(); j++) { for(int i = 0; i < (vec[vec.size()-1]-vec[j])/2; i++)printf(" "); for (int i = 0; i < vec[j]; i++) printf("%c",c); printf("\n"); } cout << total - sum; return 0; }