2022.3.23 洛谷P5730

C;(0分)

纯用C太难搞了,打表差点没搞死我,也可能是我自身问题吧,结果正确?但没分

#include<stdio.h>


void print1(char *a, int n)
{
	for (int i = 0; i <= n - 1; i++)
	{
		if (a[i] == '1')
		{
			printf("..X");
		}
		else if (a[i] == '4')
		{
			printf("X.X");
		}
		else
		{
			printf("XXX");
		}

		if (n - 1 - i)
		{
			printf(".");
		}
	}

}


void print2(char *a, int n)
{
	for (int i = 0; i <= n - 1; i++)
	{
		if (a[i] == '1' || a[i] == '2' || a[i] == '3' || a[i] == '7')
		{
			printf("..X");
		}
		else if (a[i] == '5' || a[i] == '6')
		{
			printf("X..");
		}
		else
		{
			printf("X.X");
		}

		if (n - 1 - i)
		{
			printf(".");
		}
	}

}


void print3(char *a, int n)
{
	for (int i = 0; i <= n - 1; i++)
	{
		if (a[i] == '0')
		{
			printf("X.X");
		}
		else if (a[i] == '7' || a[i] == '1')
		{
			printf("..X");
		}
		else
		{
			printf("XXX");
		}

		if (n - 1 - i)
		{
			printf(".");
		}
	}
}


void print4(char *a, int n)
{
	for (int i = 0; i <= n - 1; i++)
	{
		if (a[i] == '2')
		{
			printf("X..");
		}
		else if(a[i] == '0' || a[i] == '6' || a[i] == '8')
		{
			printf("X.X");
		}
		else
		{
			printf("..X");
		}

		if (n - 1 - i)
		{
			printf(".");
		}
	}
}


void print5(char *a, int n)
{
	for (int i = 0; i <= n - 1; i++)
	{
		if (a[i] == '4' || a[i] == '7' || a[i] == '1')
		{
			printf("..X");
		}
		else
		{
			printf("XXX");
		}

		if (n - 1 - i)
		{
			printf(".");
		}
	}
}


int main()
{
	int n = 0, i = 0;

	char b[1010];

	scanf("%d", &n);

	getchar();

	while (i < n)
	{
		scanf("%c", &b[i]);

		i++;
	}

	print1(b, n);

	printf("\n");

	print2(b, n);

	printf("\n");

	print3(b, n);

	printf("\n");

	print4(b, n);

	printf("\n");

	print5(b, n);

	return 0;
}

C++:(100分)(自己写的)

#include <iostream>

#include <string>

using namespace std;


int main()
{
	int n;

	string a;

	string b[1000];

	string c[5] = { "XXX",  "X.X",  "..X",  "X..",  "." };

	cin >> n;

	cin >> a;

	for (int i = 1; i <= n; i++)
	{
		switch (a[i - 1])
		{
		case '0':
			b[1] += c[0];
			b[5] += c[0];
			b[2] += c[1];
			b[3] += c[1];
			b[4] += c[1];

			break;


		case '1':
			b[1] += c[2];
			b[2] += c[2];
			b[3] += c[2];
			b[4] += c[2];
			b[5] += c[2];

			break;


		case '2':
			b[1] += c[0];
			b[3] += c[0];
			b[5] += c[0];
			b[2] += c[2];
			b[4] += c[3];

			break;


		case '3':
			b[1] += c[0];
			b[3] += c[0];
			b[5] += c[0];
			b[2] += c[2];
			b[4] += c[2];

			break;


		case '4':
			b[3] += c[0];
			b[4] += c[2];
			b[5] += c[2];
			b[1] += c[1];
			b[2] += c[1];

			break;


		case '5':
			b[1] += c[0];
			b[3] += c[0];
			b[5] += c[0];
			b[2] += c[3];
			b[4] += c[2];

			break;


		case '6':
			b[1] += c[0];
			b[3] += c[0];
			b[5] += c[0];
			b[2] += c[3];
			b[4] += c[1];

			break;


		case '7':
			b[1] += c[0];
			b[2] += c[2];
			b[3] += c[2];
			b[4] += c[2];
			b[5] += c[2];

			break;


		case '8':
			b[1] += c[0];
			b[3] += c[0];
			b[5] += c[0];
			b[2] += c[1];
			b[4] += c[1];

			break;


		case '9':
			b[1] += c[0];
			b[3] += c[0];
			b[5] += c[0];
			b[2] += c[1];
			b[4] += c[2];

			break;

		default:
			break;
		}

		if (n - i)
		{
			b[1] += c[4];
			b[3] += c[4];
			b[5] += c[4];
			b[2] += c[4];
			b[4] += c[4];
		}

	}

	for (int i = 1; i <= 5; i++)
	{
		cout << b[i].substr(0, b[i].length()) << endl;
	}

	return 0;
}

推荐看到的一位大佬解题思路,感觉这才是这题的正解呀

P5730 【深基5.例10】显示屏_三无提督w的博客-CSDN博客

python的话暂时没有什么好的想法,自己来的话也是仿C++的打表

同样的这位大佬的思路也挺好的,推荐观看

欢迎各位大佬斧正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值