计蒜客详解合集(2)期

news2024/12/31 4:50:37

目录

T1126——单词倒排

T1617——地瓜烧

T1612——蒜头君的数字游戏

T1488——旋转单词

T1461——校验信用卡号码

T1437——最大值和次大值


T1126——单词倒排

超级水的一道题,和T1122类似但更简单,分割后逆序输出即可~

  • 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
  • 输入格式:输入为一个字符串 (字符串长度至多为 100)。
  • 输出格式:输出为按要求排序后的字符串。

#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
int main(int argc, char** argv) {
	
	string S;
	vector<string> V;
	
	getline(cin,S);
	string temp;
	
	//分割单词 
	for(int i=0;i<=S.size()-1;i++)
	{
		temp+=S[i];
		if(S[i]==' '||i==S.size()-1)
		//最后一个单词要有单独的操作 
		{
			V.push_back(temp);
			temp.clear();
		}	
	}
	
	//删除除了最后一个单词以外,末尾的空格 
	for(int i=0;i<V.size()-1;i++)
	{
		string temp=V[i];
		temp.erase(temp.size()-1);
		V[i]=temp;
	}
	
	for(int i=V.size()-1;i>=0;i--)
	{
		cout<<V[i]<<" ";
	}
 
	cout<<endl;

	
	return 0;
}

T1617——地瓜烧

 同样是水题,不解释~

  • 恭头君喜欢喝地瓜烧,刚开始他在小卖部买了  地瓜烧,已知 人空可以换一瓶地风烧,请帮他计算一下,最后能喝几瓶地瓜院。(小卖部不允许借商品)
  • 输入格式:行包括两个整数n,k (1< n,k <=108)。
  • 输出格式:输出一个整数,表示蒜头君最多能喝地瓜烧的瓶数。

#include <iostream>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) 
{
	int n=0,k=0;
	cin>>n>>k;
	
	int num1=n;
	int num2=n/k;
	cout<<(num1+num2)<<endl;
	
	return 0;
}

 

T1612——蒜头君的数字游戏

水题,太简单不解释,记得别把多余的0输入就行,由于没有明确的循环次数,本题用while循环更适合一些。

  • 蒜头君最近被要求参加一个数字游戏,要求他把看刊的一系列整数长度不一定,以0 结束,最多不过 100 个),记住了然后反着念出来表示结中的数字0就不要今出来了,这对蒜头君的那点记忆力来说实在是太难了,所以请你帮他偏程解决这个问题。
  • 输入格式:行内输入一系列整数 (大小在(1~10^9 之内) ,以0结束,用空格来分隔。
  • 输出格式:行内倒着输出这一系列整数,以空格间隔。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 

int main(int argc, char** argv) 
{
	int num=-1;
	vector<int> V;
	//初始化必备变量 
	while(num!=0)
	{
		cin>>num;
		V.push_back(num);
	}

	reverse(V.begin(),V.end());
	//翻转 
	
	for(vector<int>::iterator it=V.begin()+1;it!=V.end();it++)
		cout<<(*it)<<" ";
	cout<<endl;
	//从第二个下标开始迭代,去掉多余的0 
	
	return 0;
}

T1488——旋转单词

  • 今天的英语课,王老师为了复习以前学过的单词,提高学生的学习兴趣。想出了一个主意:读入 M组数据 ,其中每组数据一个单词(单长度 36 字个字符)和一个整数N(1~36),从该单词末位开始逐位相移到单词的开头。如果还没达到N倍  ,则再从末位未位开移,直到 N 为止,求称 N 位后的新单词,你能编程帮助贝贝最快完成任务吗?
  • 输入格式:文件共有2 x M +1行,第1行为 M,第2行开始为体数据,每一组数据有2行,第1行字串L,第2行为N.
  • 输出格式:共 M 行,每行为旋转后的字串。

如题,抽象本题的重点在于以下几点:

1.输入一个字符串并匹配一个专属的数字

2.将每一个字符串后n位按照原顺序前置

对于要点1,此处采用自定义类型压入vector解决;对于要点2,采用双循环遍历解决。

具体见代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

struct yuansu{
	string s;
	int num;
	//自定义类型符合题意要求 
};
 
int main(int argc, char** argv) 
{
	vector<yuansu> V;
	int n=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		yuansu temp;
		cin>>temp.s;
		cin>>temp.num;
		V.push_back(temp);
	}
	//接受题干数据 

	vector<string> G;
	//G用来存放处理后的字符串 
	for(int i=0;i<=V.size()-1;i++)
	{
		string linshi;
		//临时的字符串 
		string goal=V[i].s;
		int n=V[i].num;
		int length=goal.size()-1;
		//获取当前元素的字符串和数字M,以及当前字符串的下标最大值 
		for(int j=length,k=1;k<=n;j--,k++)
		{
			//从最后一个字符开始操作,选取n个字符(即题干中的M) 
			linshi+=goal[j];
			//采用字符串的加法赋值 
		}
		reverse(linshi.begin(),linshi.end());
		//注意!由于字符串的加法是将新的字符加到最后面,所以此处先进行翻转使其符合题意 
		for(int p=0;p<=length-n;p++)
		{
			linshi+=goal[p];
			//将前length-n个不需要翻转的字符串补充进去 
		}
		G.push_back(linshi);
		//压入G中,进行下一组元素的操作 
	} 
	
	for(vector<string>::iterator it=G.begin();it!=G.end();it++)
		cout<<(*it)<<endl;
	//遍历G,得出答案 
	 
	return 0;
}

加入一个藏头诗版的测试用例:完美AC

T1461——校验信用卡号码

 如题,本题需要解决的本质就是多个字符串转换为整型数据的过程。主要的考点在于如下3个:

1.循环输入多个字符串并不间断

2.将字符串处理为整型数据

3.完成对整形数据的检验

上述三个要求通过STL可以很轻松地解决,具体做法写在了代码注释之中。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
 
void vectorPrint(vector<int> T1)
{
	for(vector<int>::iterator it=T1.begin();it!=T1.end();it++)
		cout<<(*it)<<" ";
	//打印整型vector的方法,没有实际意义,仅仅用来调试	
} 
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) 
{
	string temp;
	//定义临时目标字符串 
	while (cin>>temp)
	//当输入字符串时,循环就不停止,一直进入并计算 
	{
//		cout<<temp<<endl;
		vector<int> V;
		for(int i=0;i<=temp.size()-1;i++)
		{
			int t=temp[i]-48;
			//将字符串的每一位处理为int型的数据,并且压入int型的vector 
			V.push_back(t);
		} 
//		vectorPrint(V);
		reverse(V.begin(),V.end());
		//逆向操作后,从头开始按照奇数偶数位遍历。 
		int jishu=0,oushu=0,sum=0;
		for(int i=0;i<=V.size()-1;i+=2)
		{
			jishu+=V[i];
			//奇数位直接相加 
		} 
		for(int i=1;i<=V.size()-1;i+=2)
		{
			V[i]*=2;
			if(V[i]>=10)
				V[i]-=9;
			oushu+=V[i];
			//偶数位判断*2是否大于10,大于10需要减9 
		}
		sum=jishu+oushu;
		//求和后判断是否可以整除10,完杀 
		if(sum%10==0)
			cout<<"Pass"<<endl;
		else
			cout<<"Fail"<<endl;
	}
	return 0;
}

T1437——最大值和次大值

比较简单的题,用STL库可以大幅度降低代码复杂度:将int型的数字压入到vector中,调用sort实现从小到大排序,再采用reverse将其翻转为从大到小。第一个元素(最大值)首先输出,再遍历后面第一个与最大值不同的元素,其即为题干要求的次大值。

sort和reverse均在头文件“#include <algorithm>”中。

代码如下:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) 
{
	int n=0;
	cin>>n;
	vector<int> V;
	
	for(int i=1;i<=n;i++)
	{
		int temp=0;
		cin>>temp;
		V.push_back(temp); 
	}
	
	sort(V.begin(),V.end());
	reverse(V.begin(),V.end());
	//从大到小排序 
//	for(vector<int>::iterator it=V.begin();it!=V.end();it++)
//		cout<<(*it)<<" ";
//	cout<<endl;
	int max=V[0];
	cout<<max<<endl;
	for(int i=1;i<=n-1;i++)
	{
		if(V[i]!=max)
		{
			cout<<V[i]<<endl;
			break;
		}	
	} 
	return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1195995.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是UV贴图?

UV 是与几何图形的顶点信息相对应的二维纹理坐标。UV 至关重要&#xff0c;因为它们提供了表面网格与图像纹理如何应用于该表面之间的联系。它们基本上是控制纹理上哪些像素对应于 3D 网格上的哪个顶点的标记点。它们在雕刻中也很重要。 为什么UV映射很重要&#xff1f; 默认情…

如果有一款专门用于3D纹理贴图的工具,大家会愿意用吗?

专业建模软件通常具有丰富的功能和工具&#xff0c;能够帮助用户进行三维建模、模拟分析、可视化呈现等多个方面的工作&#xff0c;几乎可满足用户所有的建模相关工作。 1、专业建模软件的使用门槛 学习曲线陡峭&#xff1a;专业建模软件通常需要较长时间来学习和掌握&#xf…

实力进阶,再攀高峰!触想智能获评国家级专精特新“小巨人”企业

近日&#xff0c;触想智能收获工业和信息化部颁发的专精特新“小巨人”企业证书&#xff0c;成功跻身全国中小企业实力评优最高梯队。 此项荣誉&#xff0c;不仅是国家权威对触想智能十余年潜心耕耘的深度回响&#xff0c;也进一步激发触想持续奋发、不懈探索的成长底气。 触想…

python 字典Dict

一种序列类型&#xff0c;使用键-值&#xff08;key-value&#xff09;存储&#xff0c;具有极快的查找速度。 目录 key的特性 创建字典 元素的访问 Get获取 修改 是否存在key 删除 删除单个 删除全部 遍历 遍历key与值 只遍历值 遍历key,value方法2 结合enumera…

Redis之主从复制

文章目录 一、什么是Redis主从复制&#xff1f;1.作用2.配置主从复制的原因3.环境配置 二、一主二从三、复制原理四、链路总结 一、什么是Redis主从复制&#xff1f; 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(ma…

C++ 编译与链接过程

案例讲解 有 main.cpp 和 add.cpp 2个文件&#xff0c;add.cpp中实现add_func函数&#xff0c;main.cpp文件中需要使用add_func函数。 demo&#xff1a; // main.cpp文件 #include <iostream>int add_func(int a, int b);int main() {int a 10;int b 10;int ret ad…

想学好Python,一定不能错过这些项目!整整70个,附带源码课件

在程序员的求职中&#xff0c;「项目经历」往往是最重要的一环&#xff0c;它能最直观地体现你的编程能力。对于在校生来说&#xff0c;一个好的「项目经历」甚至可以等同于工作经验。可以说&#xff0c;把项目经历写好了&#xff0c;求职就通过了一半。&#xff08;文末有教程…

内存取证分析

内存取证会临时存储一些有价值的信息 查看内存进程的信息等等&#xff0c;对溯源这种事情有帮助。不过要用到专门的工具获取信息 运行exe文件&#xff0c;输入y将一个系统的镜像完整的下载下来&#xff0c; 这就是保存下来的文件。 视频上别的工具搞不来&#xff0c;要不就是…

53. 最大子序和 392.判断子序列 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离

53. 最大子序和 题目&#xff1a; 给定一个整数数组&#xff0c;求最大连续子序列和。&#xff08;至少包含一个元素&#xff09; 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6意为为了连续最大负数都可以包含进来。…

Vatee万腾数字化愿景:Vatee科技决策力引领数字化创新

在当今数字化时代&#xff0c;科技创新变得愈发不可或缺。创新是企业和个人在竞争激烈的市场中脱颖而出的关键要素&#xff0c;也是推动社会发展的引擎。Vatee万腾作为一家致力于数字化创新的公司&#xff0c;已经崭露头角&#xff0c;以其前沿的数字化策略和科技决策力&#x…

在家用Python搞副业,也能月入10000+

下班副业实现经济自由的时候&#xff0c;你还在床上躺着&#xff0c;天天摆烂吗&#xff1f;这样的生活真的是你想要的吗&#xff1f; 疫情在家接一些Python相关的小单子&#xff0c;既能给自己练手&#xff0c;还能赚是真香 从零基础开始真的一台电脑和一部手机就可以✅ 一次…

Oracle迁移(RAC变单机模式)

1.升级内核 systemctl stop firewalld systemctl disable firewalldrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo"elrepo-kernel" list --showduplic…

【C++】STL的基本用法

目录结构 1. STL概念 1.2 常见容器 1.3 六大组件 2. STL容器之vector 1. vector 2. 基本用法示例 3. STL容器之map 1. map 2. 基本用法示例 1. STL概念 C中的STL是指标准模板库的缩写。STL提供了一组通用的模板类和函数&#xff0c;用于实现常见的数据结构和算法&…

Clickhouse学习笔记(3)—— Clickhouse表引擎

前言&#xff1a; 有关Clickhouse的前置知识详见&#xff1a; 1.ClickHouse的安装启动_clickhouse后台启动_THE WHY的博客-CSDN博客 2.ClickHouse目录结构_clickhouse 目录结构-CSDN博客 Cickhouse创建表时必须指定表引擎 表引擎&#xff08;即表的类型&#xff09;决定了&…

【MATLAB源码-第75期】基于模拟退火算法(SA)的栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 模拟退火算法是一种启发式优化算法&#xff0c;通常用于解决组合优化问题&#xff0c;例如旅行商问题和图着色问题。它模拟了固体材料在退火过程中逐渐冷却达到稳定状态的行为&#xff0c;以寻找问题的全局最优解。 以下是模…

【MATLAB源码-第76期】基于模拟退火算法(SA)的无人机三维地图路径规划,输出最短路径和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 模拟退火算法是一种启发式优化算法&#xff0c;通常用于解决组合优化问题&#xff0c;例如旅行商问题和图着色问题。它模拟了固体材料在退火过程中逐渐冷却达到稳定状态的行为&#xff0c;以寻找问题的全局最优解。 以下是模…

Unity 场景优化策略

Unity 场景优化策略 GPU instancing 使用GPU Instancing可以将多个网格相同、材质相同、材质属性可以不同的物体合并为一个批次&#xff0c;从而减少Draw Calls的次数。这可以提高性能和渲染效率。 GPU instancing可用于绘制在场景中多次出现的几何体&#xff0c;例如树木或…

软件工程的舞台上,《人月神话》的美学纷飞

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天给大家分享一本书&#xff1a;《人月神话》——软件工程的经典之作。 《人月神话》是一本具有深远影响力的软件工程著作&#xff0c;无论是软件开发者、管理者还是学习软件工程的人士&#xff0c;都能从中获得宝贵的启…

电脑想要微信多开——打开多个微信的必胜法宝!

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2023.11.11 Last edited: 2023.11.11 导读&#xff1a;在生活当中经常遇到工作和生活相撞的事情&#xff0c;导致在处理私人的事情同时不得不处理…

redis学习指南--概览篇

redis怎么学 官方学习网站&#xff1a; redis.cn 1、整体了解redis redis是一个内存数据库、kv数据库&#xff0c;数据结构数据库&#xff0c;redis中数据都是存储在redis中&#xff0c;可以通过key查找value&#xff0c;value可以有多种数据结构&#xff0c;有&#xff1a;…