A. 学姐的数码管 2014新生暑假个人排位赛03
时间限制 1000 ms 内存限制 65536 KB
题目描述
学姐的七段数码管玩的出神入化。 现在给你一个浮点数,你需要把它以七段数码管的形式输出出来。 一个(2∗n+1)∗n的矩阵来表示七段数码管,若下标均从0开始,则以第0列的两个,第n−1列的两个,第0行的一个,第n行的一个,第2∗n行的一个表示七个段。小数点所占矩形为(2∗n+1)∗1,点在中间最下面一列。每一个数字或小数点矩阵用一列空格隔开。 数码管亮的部分用#覆盖,其余部分用空格补全,若一个数字或小数点的行末尾无#,也要用空格字符补全为(2∗n+1)∗n 细节参见样例。
输入格式
输入有多组数据,数据不超过100组,每组数据给一个整数n(3≤n≤10),和一个浮点数,输入保证每一个浮点数的总长度为4位且没有前导0。
输出格式
输出他的数码管显示。每组数据末尾输出一个空行。
时间限制 1000 ms 内存限制 65536 KB
题目描述
学姐的七段数码管玩的出神入化。 现在给你一个浮点数,你需要把它以七段数码管的形式输出出来。 一个(2∗n+1)∗n的矩阵来表示七段数码管,若下标均从0开始,则以第0列的两个,第n−1列的两个,第0行的一个,第n行的一个,第2∗n行的一个表示七个段。小数点所占矩形为(2∗n+1)∗1,点在中间最下面一列。每一个数字或小数点矩阵用一列空格隔开。 数码管亮的部分用#覆盖,其余部分用空格补全,若一个数字或小数点的行末尾无#,也要用空格字符补全为(2∗n+1)∗n 细节参见样例。
输入格式
输入有多组数据,数据不超过100组,每组数据给一个整数n(3≤n≤10),和一个浮点数,输入保证每一个浮点数的总长度为4位且没有前导0。
输出格式
输出他的数码管显示。每组数据末尾输出一个空行。
输出样例
### ### ### ###
# # # # #
# # # # #
### ### ### # #
# # # # #
# # # # #
### ### ### ###
# # # ### ###
# # # # #
# # # # #
# ### ### ###
# # # # #
# # # # #
# # ### ###
#### #### ####
# # # # #
# # # # #
# # # # #
# #### ####
# # # #
# # # #
# # # #
# #### # ####
赛中提交:WA WA WA
赛后ac:Y
赛时WA原因:
没看懂题目啊TT~!!!
“每组数据末尾输出一个空行。”
是空行啊 啊啊啊啊啊啊啊混蛋~!!!
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <vector>
#include <list>
#include <map>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <numeric>
#include <functional>
#define maxn 500005
using namespace std;
char bitc[15];
int bit[15];
int tube(int n)
{
int bits=3;
for(int i=bits;i>=0;i-=1){ //第零行~!!!!!
if(bit[i]==1){
for(int j=0;j<n-1;j+=1){
printf(" ");
}
printf("#");
}
else if(bit[i]==4){
printf("#");
for(int j=0;j<n-2;j+=1){
printf(" ");
}
printf("#");
}
else if(bit[i]==99){
printf(" ");
}
else{
for(int j=0;j<n;j+=1){
printf("#");
}
}
if(i!=0){
printf(" ");
}
}
printf("\n");
for(int k=1;k<=n-1;k+=1){
for(int i=bits;i>=0;i-=1){ //第一行至第n-1行!!!!
if(bit[i]==5||bit[i]==6){
printf("#");
for(int j=0;j<n-1;j+=1){
printf(" ");
}
}
else if(bit[i]==99){
printf(" ");
}
else if(bit[i]==0||bit[i]==4||bit[i]==8||bit[i]==9){
printf("#");
for(int j=0;j<n-2;j+=1){
printf(" ");
}
printf("#");
}
else{
for(int j=0;j<n-1;j+=1){
printf(" ");
}
printf("#");
}
if(i!=0){
printf(" ");
}
}
printf("\n");
}
for(int i=bits;i>=0;i-=1){ //第n行~!!!!!
if(bit[i]==1||bit[i]==7){
for(int j=0;j<n-1;j+=1){
printf(" ");
}
printf("#");
}
else if(bit[i]==99){
printf(" ");
}
else if(bit[i]==0){
printf("#");
for(int j=0;j<n-2;j+=1){
printf(" ");
}
printf("#");
}
else{
for(int j=0;j<n;j+=1){
printf("#");
}
}
if(i!=0){
printf(" ");
}
}
printf("\n");
for(int k=1;k<=n-1;k+=1){
for(int i=bits;i>=0;i-=1){ //第n+1行至第2n-1行!!!!
if(bit[i]==8||bit[i]==6||bit[i]==0){
printf("#");
for(int j=0;j<n-2;j+=1){
printf(" ");
}
printf("#");
}
else if(bit[i]==2){
printf("#");
for(int j=0;j<n-1;j+=1){
printf(" ");
}
}
else if(bit[i]==99){
printf(" ");
}
else{
for(int j=0;j<n-1;j+=1){
printf(" ");
}
printf("#");
}
if(i!=0){
printf(" ");
}
}
printf("\n");
}
for(int i=bits;i>=0;i-=1){ //第2n行~!!!!!
if(bit[i]==1||bit[i]==4||bit[i]==7){
for(int j=0;j<n-1;j+=1){
printf(" ");
}
printf("#");
}
else if(bit[i]==99){
printf("#");
}
else{
for(int j=0;j<n;j+=1){
printf("#");
}
}
if(i!=0){
printf(" ");
}
}
printf("\n");
printf("\n");
}
int main()
{
int n;
//freopen("t.txt","w",stdout);
while(scanf("%d %s",&n,bitc)!=EOF){
getchar();
for(int i=0,j=3;i<4;i+=1,j-=1){
if(bitc[i]=='.'){
bit[j]=99;
}
else{
bit[j]=bitc[i]-'1'+1;
}
}
tube(n);
}
return 0;
}