乙级1036

这个就很简单了

#include<cstdio>
#include<cmath> int main(){
int n;
char a;
scanf("%d %c",&n,&a);
for(int i=;i<round(float(n)/.);i++){
for(int j=;j<n;j++){
if(i==||i==round(float(n)/.)-){
printf("%c",a);
}else{
if(j==||j==n-){
printf("%c",a);
}else{
printf(" ");
}
}
}
printf("\n");
}
return ;
}

乙级1027

这道题简直有毒。。。。我严重怀疑出题的严谨性。

我第一次提交代码,是两个Answer Wrong。我又修改了一下。。。这两个成为 Presentation Error格式错误了。。。我百思不得其解。

然后看算法笔记的解法。。。虽然跟我的不一样。但是他输出的时候

PAT——乙级1036:跟奥巴马一起编程 &amp;乙级1027:打印沙漏 (有坑)-LMLPHP

每一行直接换行了,而我是又输出了几个空格。跟最长的一样长了才换行的。看着是一模一样的。天知道这有个这么大的坑呀。。。他的输出格式里又没有规定。。。坑爹呀。

我的解法是先算出了上面倒三角形总共有几行,再一行一行的输出。比较麻烦。。。

#include<cstdio>
#include<cmath>
int main(){
int N,n,temp,j;
char c;
scanf("%d %c",&N,&c);
n=int(sqrt((N-)/.+));
if(n==&&n>) n=n-;
if(n==) printf("%c\n",c);
else{
for(int i=;i<n;i++){
for(j=;j<i;j++){
printf(" ");
}
for(;j<*n--i;j++){
printf("%c",c);
}
printf("\n");
}
for(int i=n-;i>=;i--){
for(j=;j<i;j++){
printf(" ");
}
for(;j<*n--i;j++){
printf("%c",c);
}
printf("\n");
}
}
if(n!=) printf("%d\n",N-(n*n-)*-);
else printf("%d\n",n); return ;
}
05-08 15:28