【UOJ 222】正方形二分型
【题目描述】:
下面这个图形是不是很熟悉,对同学们在学LOGO语言时,用海龟画过类似的图形,现在你能用C语言画出来吗?
N=1 N=2
* * * * * * * * *
* * * * * *
* * * * * * * * *
* * * * * *
* *
* *
* *
* *
* * * * * *
N=3
* * * * * * * * * * * *
* * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * *
* * * *
* * * *
* * * *
* * * *
* * * * * * * * * * * *
* * * * * * * * * * * *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* * * * * * * * * * * *
【输入描述】:
输入一个正整数N;
【输出描述】:
输出正方形的N层二分形,行末没有多余空格。
【样例输入】:
2
【样例输出】:
* * * * * *
* * * *
* * * * * *
* * * * * *
* *
* *
* *
* *
* * * * * *
【时间限制、数据范围及描述】:
时间:1s 空间:64M
N<=9
题解:模拟大法好(?)网站测100,老师机器lemon测80 ,原封不动的代码,吐了。。。
#include<cstdio> #include<iostream> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<bits/stdc++.h> typedef long long ll; using namespace std; int n; int main(){ freopen("twopart.in","r",stdin); freopen("twopart.out","w",stdout); scanf("%d",&n); for(int i=1,j=n;i<=n;i++,j--){ int t=pow(2,j-1);//这一行有t个正方形 int l=3*pow(2,i-1);//每个正方形的边长 for(int jj=1;jj<t;jj++){ for(int k=1;k<=l;k++) printf("* "); for(int k=1;k<=l;k++) printf(" "); } for(int k=1;k<l;k++) printf("* "); printf("*"); printf("\n"); //第一排 for(int h=2;h<l;h++){ for(int jj=1;jj<t;jj++){ printf("*"); for(int k=2;k<l;k++) printf(" "); printf(" * "); for(int k=1;k<=l;k++) printf(" "); } printf("*"); for(int k=2;k<l;k++) printf(" "); printf(" *\n"); } // 第2~n-1排 for(int jj=1;jj<t;jj++){ for(int k=1;k<=l;k++) printf("* "); for(int k=1;k<=l;k++) printf(" "); } for(int k=1;k<l;k++) printf("* "); printf("*"); printf("\n"); //第n排 } return 0; }