【蓝桥杯每日一题】3.8

 

🏝️专栏:【蓝桥杯备篇】

🌅主页: f狐o狸x


抱一丝各位,前面两个月生了一场重病没有更新,懒病太严重了,从现在开始接着这个专题更新

每天刷一题,头发少一根;但若放弃治疗,头发掉一吨!------ 秃头警告,但坚持就是胜利

3.8

一、P1067 NOIP 2009 普及组 多项式输出

链接:NOIP 2009 普及组 多项式输出

题目描述:

解题思路:

这道题属于模拟题,考察你的代码能力,题目要求啥你就弄哈就OK了

解题代码:

cpp 复制代码
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
	int n = 0;
	cin >> n;
	for(int i = n; i >= 0; i--)
	{
		int a = 0; cin >> a;
		if(a == 0) continue;
		// 1.符号 
		if(a < 0)
			cout << "-";
		else if(a > 0)
		{
			if(i != n)
				cout << "+";
		}
		// 2.数字  
		a = abs(a);
		if( a > 1 || (a == 1 && i == 0) )
			cout << a;
		// 3.x
		if( i > 1)
		{
			cout << "x^" << i;
		}
		else if( i == 1)
			cout << "x";
	}
	return 0;
 } 

二、P5731 【深基5.习6】蛇形方阵

题目链接:P5731 【深基5.习6】蛇形方阵

题目描述:

解题思路:

这个题我们可以采用方向向量,如下图,因为是顺时针填充的,所以方向就是右、下、左、上,最后在按照题目意思,把越界的填充都改变方向,变成合法的填充就可以了

解题代码:

cpp 复制代码
const int N = 10;

// 定义方向向量
int dx[4] = { 0,1,0,-1 };
int dy[4] = { 1,0,-1,0 };

int arr[N][N] = { 0 };

int main()
{
	int n = 0; cin >> n;
	// 起始位置
	int x = 1;
	int y = 1;
	int pos = 0;
	for (int i = 1; i <= n * n; i++)
	{
		arr[x][y] = i;
		int a = 1, b = 1;
		a = x + dx[pos];
		b = y + dy[pos];
		if (a < 1 || a > n || b < 1 || b > n || arr[a][b])
		{
			pos = (pos + 1) % 4;
			a = x + dx[pos];
			b = y + dy[pos];
		}
		x = a;
		y = b;
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			printf("%3d", arr[i][j]);
		}
		printf("\n");
	}

	return 0;
}

三、P1098 NOIP 2007 提高组 字符串的展开

题目链接:P1098 NOIP 2007 提高组 字符串的展开

题目描述:

解题思路:

这题也是明显的模拟题,就按照题目描述的意思一步一步来,注意不要遗漏情况就可以了

解题代码:

cpp 复制代码
string s;
string ret;

int p1, p2, p3;
// 判断是否是小写字母
bool is_a(char ch)
{
	return ch >= 'a' && ch <= 'z';
}

// 判断是否是数字
bool is_num(char ch)
{
	return ch >= '0' && ch <= '9';
}

//增加函数
void add(char left, char right)
{
	string t;
	 for (char ch = left + 1; ch < right; ch++)
	 {
		 char tmp = ch;
		 //处理p1
		 if (p1 == 2 && is_a(ch) && is_a(right))
		 {
			 tmp -= 32;
		 }
		 else if (p1 == 3)
		 {
			 tmp = '*';
		 }
		 //处理p2
		 for (int i = 0; i < p2; i++)
		 {
			 t += tmp;
		 }

	 }
	 //处理p3
	 if (p3 == 2)
	 {
		 reverse(t.begin(), t.end());
	 }
	 ret += t;
}

int main()
{
	cin >> p1 >> p2 >> p3 >> s;
	int l = s.size();
	// 遍历字符串,找'-'
	for (int i = 0; i < l; i++)
	{
		if (i == 0 || i == l - 1 || s[i] != '-') ret += s[i];
		else
		{
			//找到字符串判断是否能展开
			char left = s[i - 1];
			char right = s[i + 1];
			if (is_a(left) && is_a(right) && left < right ||
				is_num(left) && is_num(right) && left < right)
			{
				add(left, right);
			}
			else ret += s[i];

		}
	}

	cout << ret;
	return 0;
}

键盘敲响的不仅是算法,更是逆袭的节奏!!!各位加油!

相关推荐
程序员yu8 分钟前
会编网络:别被入门教程骗了,Python实用能力不在语法本身
开发语言·python·学习·算法
Bruce_Liuxiaowei22 分钟前
Python 字典默认值完全指南:从 KeyError 到 defaultdict
开发语言·数据结构·python·字典
LuminousCPP34 分钟前
从零开始学 C++(三):类和对象入门|从 struct 到 class,理解封装、对象与 this 指针
c++·笔记·学习·类和对象
郝学胜-神的一滴39 分钟前
游戏引擎原理与实践 01:聊聊游戏引擎的前世今生
开发语言·c++·游戏引擎·产品运营·软件工程·产品经理·untiy
Allen_LVyingbo1 小时前
信息化部门在AI时代的编程转移路径分析(上)
人工智能·python·算法·健康医疗·数据库开发·时序数据库·数据库架构
七牛云行业应用1 小时前
Jev 报 401 / api_key_required 怎么解决:TypeSafe AI 官方错误码表与排查步骤
算法·github
晴天的雨.9921 小时前
【C++算法】三数之和
开发语言·c++·算法
pippocao1 小时前
王者荣耀日志组件BqLog 为何如此快之3——压缩日志执行路径优化
c++
AC赳赳老秦1 小时前
公开 CSV 数据集批量处理实战:用 OpenClaw 高效完成下载、清洗与标准化分析样本生成
java·开发语言·汇编·c++·python·deepseek·openclaw
凉茶钱2 小时前
【吃透C++】static、友元、内部类、匿名对象与拷贝编译器优化全解析
c++·青少年编程·visual studio