PAT沙漏

#include <cstdio>
#include <iostream>

using namespace std;

int num[1004];
int rest[1004];

void preHandle(){
int sum = 1;
int cnt = 1;
for (int i = 1; i < 1004; ++i) {
if (i >= sum) {
cnt += 2;
sum += cnt * 2;
}
num[i] = cnt - 2;
rest[i] = i + cnt * 2 - sum;

}
}
int main(){

preHandle();

int n;
char ch;
cin >> n >> ch;
int size = num[n];
for (int j = 0; j < size; ++j){
for (int i = 0; i < size; ++i) {
if ((j <= i && j <= size - 1 - i) || (j >= i && j >= size - 1 - i)) {
cout << ch;
}
else if ((j > i && j < size - 1 - i)) {
cout << ‘ ‘;
}
else{
break;
}
}
cout << endl;
}

cout << rest[n] << endl;
return 0;
}

时间: 2024-08-27 01:10:40

PAT沙漏的相关文章

pat沙漏我写的

#include<iostream>using namespace std;int main(){ int a, i, k, j, n1,n2; int b = 7; int n = 3; char ch; cin >> a >> ch; if (a < 7) { cout << ch << endl; cout << a - 1 << endl; exit(0); } while (a >= b) { b =

PAT B1027 打印沙漏

PAT B1027 打印沙漏 题目描述: 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 *****  ***   *  *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔. 输

PAT乙级1027. 打印沙漏(20)

本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔. 输出格式: 首先打印出由给定符号组成的最大的沙漏形

PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)

1027. 打印沙漏(20) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出

PAT (Basic Level) Practise:1027. 打印沙漏(20)

[题目链接] 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔. 输出格式: 首先打印出由给定符号组成

PAT:1027. 打印沙漏(20) AC

#include int main() { int n; char xing; scanf("%d %c",&n,&xing); int num=1,i=1; while(1) { num = num + 2 * (i + 2); //一开始就超出,不改变i if(num > n) break; i += 2; } int MAX=i; for(int k=0 ; kPAT:1027. 打印沙漏(20) AC

PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌

00-自测1. 打印沙漏(20) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔. 输出格式: 首先

PAT 1027. 打印沙漏(20)

本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔. 输出格式: 首

PAT 乙级 1027 打印沙漏(20) C++版

1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定