建设网站目的是什么,360建筑网如何删除简历,方象科技的服务范围,电子商务网站建设需求文档题目
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”#xff0c;要求按下列格式打印 所谓“沙漏形状”#xff0c;是指每行输出奇数个符号#xff1b;各行符号中心对齐#xff1b;相邻两行符号数差2#xff1b;符号数先从大到小顺序递减到1#x…题目
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”要求按下列格式打印 所谓“沙漏形状”是指每行输出奇数个符号各行符号中心对齐相邻两行符号数差2符号数先从大到小顺序递减到1再从小到大顺序递增首尾符号数相等。 给定任意N个符号不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N≤1000和一个符号中间以空格分隔。 输出格式: 首先打印出由给定符号组成的最大的沙漏形状最后在一行中输出剩下没用掉的符号数。 输入样例: 19 * 输出样例: 分析
从中间看沙漏本质上是一个首项为1公比为2的等差数列。通项公式ana1(n-1)d,前n项和Sna1n(n-1)*d/2。代入首项和公比an2n-1,Snn2.一个沙漏的总字符数2Sn-12n2-1,再由输入的字符数可计算出剩余字符个数。
AC代码
#includeiostream
#includecmath
using namespace std;
int main()
{int i,j,N;char c;cinNc;double a(double)(N1)/2;int numfloor(sqrt(a));//上半部分for(inum;i1;i--){for(j0;jnum-i;j)cout ;for(j0;j2*i-1;j)coutc;// for(j0;jnum-i;j)// cout ;coutendl;}//下半部分for(i2;inum;i){for(j0;jnum-i;j)cout ;for(j0;j2*i-1;j)coutc;// for(j0;jnum-i;j)// cout ;coutendl;}coutN-(2*num*num-1);
}刚开始每行字符后面加了空格后面提示格式不对。然后只要求符号中心对齐并没有要求后面的空格。也就是说做题的时候要紧跟题意不要过于理解。 如果这篇文章对你有帮助动动可爱的小手点个赞呗 有任何问题欢迎评论区交流。
更多题解 pat 乙级 题解汇总持续更新C