問題はこちら
No.646 逆ピラミッド - yukicoder
言われたとおりに二重ループを実装するだけ
main(){
int n;
scanf("%d",&n);
for(int i=n;i>0;i--){
for(int j=0;j<i;j++)printf("%d",n);
puts("");
}
}
縮める。まずはささっと
i,j;
main(n){
scanf("%d",&n);
for(i=n;i>0;i--,puts(""))for(j=0;j++<i;)printf("%d",n);
}
頑張って縮める
for(i=n;i>0;i--,puts(""))for(j=0;j++<i;)printf("%d",n); //for文圧縮 for(i=n;j++<i?printf("%d",n):(j=0,puts(""),--i);); //三項演算子の順序を入れ替え for(i=n;++j>i?j=0,puts(""),--i:printf("%d",n);); //jのループを逆に for(j=i=n;!j--?puts(""),j=--i:printf("%d",n);); //putsの返り値を使う for(j=i=n;!j--?j=i-=puts(""):printf("%d",n););
ということで完成品がこちら
i,j;
main(n){
scanf("%d",&n);
for(j=i=n;!j--?j=i-=puts(""):printf("%d",n););
}
74B