我的PAT-BASIC代码仓:https://github.com/617076674/PAT-BASIC
原题链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805294251491328
题目描述:
知识点:找排列规律
思路:先确定剩余字符数,再依次排列
本题有两个坑点:
(1)每行最后一个字符应该是题给的特殊字符,而不能是空格。
(2)如果没有剩余字符,需要输出0。
C++代码:
#include<iostream>
#include<vector>
using namespace std;
int main() {
int count;
char c;
cin >> count >> c;
int realCount = 1;
int level = 1;
while (true) {
int nextRealCount = realCount + 2 * (1 + 2 * level);
if (nextRealCount <= count) {
realCount = nextRealCount;
} else {
break;
}
level++;
}
for (int i = level - 1; i >= 0; i--) {
for (int j = 0; j < level - i - 1; j++) {
cout << " ";
}
for (int j = 0; j < 1 + 2 * i; j++) {
cout << c;
}
printf("\n");
}
for (int i = 1; i < level; i++) {
for (int j = 0; j < level - i - 1; j++) {
cout << " ";
}
for (int j = 0; j < 1 + 2 * i; j++) {
cout << c;
}
printf("\n");
}
int remain = count - realCount;
cout << remain;
}
C++解题报告: