PAT乙級 1027 列印沙漏
阿新 • • 發佈:2018-11-08
測試點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); //輸出剩下沒用掉的符號數 }