1027. 打印沙漏(20)
2016-08-31 15:15
239 查看
1027. 打印沙漏(20)
C++AC代码(更新于2017年4月9日)
解题思路,注意到行数与第一行和最后一行字符数都是相等的,根据等差数列找关系
C代码(Pre)
C++AC代码(更新于2017年4月9日)
解题思路,注意到行数与第一行和最后一行字符数都是相等的,根据等差数列找关系
#include <iostream> #include <algorithm> using namespace std; int main() { int n,linenum=1,k,s=0;//s用于记录空格数,linenum为总计打印行数 char ch; cin>>n>>ch; while((linenum+1)*(linenum+1)/2-1<=n)linenum+=2; linenum-=2;//求出行数 k=linenum; while(k>=1)//打印倒三角 { for(int i=0;i<s;++i)cout<<" "; for(int j=0;j<k;++j)cout<<ch; cout<<endl; k-=2;++s;//每一行打印符号数递减2,打印空格数递增1 } k+=4;s-=2; while(k<=linenum)//打印正三角 { for(int i=0;i<s;++i)cout<<" "; for(int j=0;j<k;++j)cout<<ch; cout<<endl; k+=2;--s; } cout<<n+1-(linenum+1)*(linenum+1)/2;//输出多余符号数 return 0; }
C代码(Pre)
#include<stdio.h> #include<math.h> int main(){ int n,m,i,j; char ch; scanf("%d %c",&n,&ch); m=sqrt((n+1)/2); for(i=m;i>=1;i--){ for(j=0;j<m-i;j++)printf(" "); for(j=1;j<=2*i-1;j++)printf("%c",ch); printf("\n"); } for(i=2;i<=m;i++){ for(j=0;j<m-i;j++)printf(" "); for(j=1;j<=2*i-1;j++)printf("%c",ch); printf("\n"); } printf("%d",n-(2*m*m-1)); }
相关文章推荐
- 1027. 打印沙漏(20) (模拟啊数学啊 ZJU_PAT)
- pat乙级真题:1027. 打印沙漏(20)
- 1027. 打印沙漏(20)-PAT乙级
- 1027. 打印沙漏(20)
- PAT1027 打印沙漏(20)
- PAT训练(乙级)—— 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- PAT乙级真题及训练集(15)--1027. 打印沙漏(20)
- PAT乙级 1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- 1027. 打印沙漏(20) python篇
- PAT 乙级 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)-PAT乙级真题
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- PAT乙级1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- [PAT乙级]1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027.打印沙漏(20)