XTU OJ 1397 Patchouli的金字塔
题目描述
Patchouli想要绘制一个金字塔。金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下:
每个三角形由
*
,/
,\
和-
组成,分别代表三角形的顶点和三条边。第一行只包含一个正三角形,其余各行的三角形按照”正三角形,倒三角形,正三角形,倒三角形,…… “的顺序紧致排列。
除最后一行外,每一行的三角形比上一行多2个。一共输出n个三角形。
例如,n=1时,图案如下:
*/ \ * - *
n=2时,图案如下:
*/ \* - */ \ * - *
n=3时,图案如下:
*/ \* - */ \ / * - *
n=7时,图案如下:
*/ \* - */ \ / \* - * - */ \ / \ * - * - *
Patchouli想知道n个三角形组成的金字塔的图案是怎样的?
输入
第一行包含一个正整数T(1≤T≤100),表示样例的个数。 接下来的T行,每行包含一个正整数n(1≤n≤100),表示金字塔中的三角形的个数。
输出
对于每个样例输出对应的图案。每行的行末不包含多余的空格。
样例输入
4 1 2 3 4
样例输出
*/ \ * - **/ \* - */ \ * - **/ \* - */ \ / * - **/ \* - */ \ / \ * - * - *
此类题型都是属于比较耗时间的题目,需要慢慢修正代码,我的代码比较长和简陋,只能提供一些思路
本题我的思路是分奇和偶行输出,最后一行的三角形要单独输出,(其实也可以不,只是我太菜了,试了好几遍也没有成功(狗头),于是就单独拿出来输出了),
#include<stdio.h>
int main()
{int k;scanf("%d",&k);while(k--){int n,a=1,i,j,cnt=0,p=0;//计数scanf("%d",&n);while(a*a<n)//确定边长{a++;}for(i=0;i<2*a-1;i++){for(j=0;j<2*a-i;j++)//空格输出{printf(" ");}if(i%2==1)//偶数行,有三种输出,/,\和空格,这该如何输出???{printf("/");for(j=0;j<2*i;j++){if(j%4==1){printf("\\");cnt++;}else if(j%4==3){printf("/");cnt++;}else printf(" ");}}else//奇数行{if(i==2*a){for(j=0;j<p;j++){if(j%4==0) printf("*");else if(j%4==2) printf("-");else printf(" ");}continue;}for(j=0;j<2*i+1;j++){if(j%4==0) printf("*");else if(j%4==2) printf("-");else printf(" ");}}printf("\n");
// if(cnt==n) break;}printf(" ");int num;num=n-cnt; //在最后一行需要打印的三角形个数if(num%2!=0) //最后一行为奇数个三角{for(j=1;j<=(num+1)/2;j++){printf("/ \\");if(j!=(num+1)/2)printf(" ");}}else //最后一行为偶数个三角{printf("/ ");for(j=1;j<=num/2;j++){ printf("\\ /");if(j!=num/2) printf(" ");}}printf("\n");for(j=1;j<=(num+1)/2;j++){printf("* -");if(j!=(num+1)/2)printf(" ");}printf(" *");printf("\n");}
}
欢迎大佬指正!!!
XTU OJ 1397 Patchouli的金字塔相关推荐
- xtu 1397 Patchouli的金字塔
题目描述: Patchouli想要绘制一个金字塔.金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,\和-组成,分别代表三角形的顶点和三条边. 第一行只包含一个正 ...
- XTU OJ 1324 Hash
XTU OJ 1324 Hash Hash 题目描述 H a s h Hash Hash是一种很常用的数据结构,Hash技术的关键在于Hash函数的选取. 一种常用整数的 H a s h Hash H ...
- XTU OJ 1375 Fibonacci
XTU OJ 1375 Fibonacci 题目描述 小明非常喜欢FibonacciFibonacciFibonacci数列,数列为 f1=1,f2=2,fn=fn−1+fn−2f_1=1,f_2=2 ...
- XTU OJ 1355 Euler‘s Totient Function(欧拉函数)
XTU OJ 1355 Euler's Totient Function(欧拉函数) 题目描述 对于整数n,定义ϕ(n)ϕ(n)ϕ(n)为小于或等于n,并与n互质的整数的个数,比如6,比它小的和它互质 ...
- xtu oj Patchouli的金字塔
Patchouli想要绘制一个金字塔.金字塔的图案由n个正三角形和倒三角形堆叠而成,具体的绘制方法如下: 每个三角形由*,/,\和-组成,分别代表三角形的顶点和三条边. 第一行只包含一个正三角形,其余 ...
- 质因数分解唯一定理(XTU OJ)
今年的oj 很有几道题用到了,这里介绍一下 质因数分解(唯一分解定理) 基本概念: 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数. 分解质因数只针对合 ...
- XTU Oj 128
Rotate 题目描述 一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动90度. 我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大.请问最大 ...
- XTU OJ 1359 字符频度
淦啊,好久不写memset都忘记怎么写了,调了半天QAQ #include<stdio.h> #include<string.h> char a[1005]; int alp[ ...
- xtu oj 1375斐波纳契
题目描述 小明非常喜欢斐波纳契数列,数列为f1=1,f2=2,fn=fn−1+fn−2.小明想知道对于一个整数n,使得n=fi+fj+fk的组合有多少种?比如5=1+1+3或者5=1+2+2,有2种. ...
最新文章
- 类和JSON的序列化与反序列化
- 聊一聊多源最短路径问题(只有5行代码哦)
- 个人工作总结09(第二阶段)
- 【CASS精品教程】CASS9.1等高线的绘制完整案例教程
- halocn标定找旋转中心_机器人工具坐标系标定原理
- 自动驾驶横向运动学分析和非线性问题处理方法
- classic example2
- java object... args_java中String.format(format,args)中的args是动态的,如何定义format?
- HBase配置(伪分布式模式)
- linux 上 Mysql 快速链接 去掉DNS解析
- php课后答案 唐四薪_PHP课后小结 12.20
- 安腾机器IA64 全自动网络安装Linux - elilo+kickstart
- 【源码】高精度31波段音频均衡器
- IT名企面试:微软笔试题
- 恒生电子 java笔试_恒生电子笔试题
- linux硬盘的两个分区合并_linux 多分区合并(lvm)实例
- 服务器oemSN查询系统,查看服务器sn码命令
- jQuery+js+css实现键盘按键呼吸灯效果
- PostgreSQL开源界的“活雷锋”
- 迪文串口屏的安装方法之卡扣结构带外壳智能屏