洛谷 T412212 菱形(Diamond)
题目背景
『菱形真漂亮』
『那我帮你打印一个吧』
小 L 和小 Z 开始打印图形了。
题目描述
小 Z 喜欢菱形和矩形,小 L 为了使小 Z 开心,于是打算找你帮『他』写一个程序。
一共需要一下两种操作:
1 x y,输出一个长 x 个单位,宽 y 个单位的矩阵。
2 x,输出一个由 x 行组成的菱形。
其中一个单位长度为 * 的长度。
具体可以看样例。
小 L 要打印 t,所以要输入多组数据。
输入格式
第一行一个正整数:t。
接下来 t 行:
输入一个数 op∈{1,2}。
若 op=1:输入剩下两个正整数 x,y。
若 op=2:输入剩下一个正整数 x。
保证对于 op=2 时:x 为奇数。
输出格式
输出共 t 个:
对于第cnt 个:
输出 Case cnt:。
下一行输出要求输出的内容。
输入输出样例
输入 #1
2 1 2 3 1 3 4
输出 #1
Case 1: ** ** ** Case 2: *** *** *** ***
输入 #2
2 2 5 2 7
输出 #2
Case 1:**** ********* Case 2:********* ****************
说明/提示
本题采用捆绑测试。
请勿输出多余行末空格。
对于所有测试数据保证:1≤t≤2×104,1≤x,y≤20,op∈{1,2}。
AC代码
#include<iostream>
using namespace std;
void lin(int cnt,int n)
{int j,i,k,a,b,c;cout<<"Case "<<cnt<<":"<<endl;for(i=1; i<=n; i++){for(k=1; k<=n-i+1; k++){cout<<" ";}for(j=1; j<=2*i-1; j++){cout<<"*";}cout<<endl;}for(a=1; a<=n+1; a++){for(b=1; b<=a-1; b++){cout<<" ";}for(c=1; c<=(n-b+2)*2-1; c++){cout<<"*";}cout<<endl;}
}
void ju(int cnt,int x,int y)
{cout<<"Case "<<cnt<<":"<<endl;for(int i=1; i<=y; i++){for(int j=1; j<=x; j++){cout<<"*";}cout<<endl;}
}
int main()
{int n,cnt=0;int o,x,y;cin>>n;while(n--){cnt++;cin>>o;if(o==2){cin>>x;x=(x-1)/2;lin(cnt,x);}else{cin>>x>>y;ju(cnt,x,y);}}return 0;
}