测试点0、3通过,但1、2运行超时,不知道问题出在哪里。以下是代码:
#include<stdio.h>
int main(){
int N,useful=1,useless,first_row;//给定字符数、可用字符数、无用字符数、第一行字符数
char ch;//给定的字符
scanf("%d %c",&N,&ch);
for(int i=2;useful<=N;++i){
if(useful+2*(2*i-1)>N){
break;
}
useful+=2*(2*i-1);
first_row=2*i-1;
} //求得useful与first_row
useless=N-useful; //得到useless
for(int i=first_row;i>=1;i-=2){
if(i!=first_row){
for(int j=(first_row-i)/2;j>0;--j){
printf(" ");
}
for(int j=i;j>0;--j){
printf("%c",ch);
}
}
else{
for(int j=i;j>0;--j){
printf("%c",ch);
}
}
printf("\n");
} //输出上半沙漏
for(int i=3;i<=first_row;i+=2){
for(int j=(first_row-i)/2;j>0;--j){
printf(" ");
}
for(int j=i;j>0;--j){
printf("%c",ch);
}
printf("\n");
} //输出下半沙漏
printf("%d",useless); //输出剩下没用掉的符号数
}