计蒜客详解合集(3)期

目录

T1236——分苹果

T1113——整理药名

T1153——整数奇偶排列

T1249——漂亮的字符串

T1168——统计素数个数

T1160——甲流病人筛选


T1236——分苹果

分享一道特别简单的题。

  • 蒜头君要把一堆苹果分给  个小朋友,要使每个人都能拿到苹果,而目每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?
  • 输入格式:个不大于 1000 的正整数 n,代表小朋友人数
  • 输出格式:个整数,表示满足条件的最少苹果个数。

        根据题意,不难看出,如果要求最少的苹果个数,则第一个小朋友需要给得最少(即1个),之后每个人多一个,既满足了不同于之前的所有人,还能满足最少的条件。

 所以,只需要将1~n依次累加,即可满足目标条件。


#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;
    cin>>n;
    
    int sum=0;
    for(int i=1;i<=n;i++)
    {
        sum+=i;    
    }
    cout<<sum<<endl;
    
    return 0;
}

T1113——整理药名

先看题干:

  • 医生在书写药品名的经算不击高大小写,格中以混,现要求 个字将生写为题是备理 范的格式,药品名的第 字的如果是字@要大写,其他字@小写,如将"ASPIRIN"或'aspirin”整理成“Aspirin"。
  • 输入格式:第一行一个数字n,表示有 n个药品名要整理,n 不超过 100;接下来n 行,每行一个单词,长度不超过 20,表示医生手书的药品名。药品名由字母、数字和 - 组成,
  • 输出格式:n 行,每行一个单词,对应输入的药品名的规范写法。

这道题并不难,如果你对编程语言的基础有很好的掌握,很容易理清整个逻辑。实际上,不涉及到算法的题目都是简单题。笔者带领大家理一下这道题的考察点:

1.输入多个不定长字符串

2.将字符串的首字母一律变为大写(分本来就是大写和本来是小写两种情况)

3.将字符串的其他字母一律变为小写(分本来及时小写和本来是大写两种情况)

        部分地方博主采用了STL的vector和string嵌套使用,实际上普通的字符数组也能搞定,只不过STL用习惯了是真的简洁;字符处理,单独写一个函数即可,用if-else判断多种情况~

 完整代码如下:

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

void Dx(int num,char x)
//输入参数分别是字符下标和字符本身 
{
	if(num==0)//首字母:本身是大写直接输出,小写要转换为大写 
	{
		if(x>='a'&&x<='z')
		{
			x=x-32;
			printf("%c",x);
		}	
		else
		{
			printf("%c",x);
		}	
	}
	else if(num>0)//其他字母,小写直接输出,大写要转换为小写 
	{
		if(x>='A'&&x<='Z')
		{
			x=x+32;
			printf("%c",x);
		}		
		else
		{
			printf("%c",x);
		}
	}
} 


int main(int argc, char** argv) {
	
	int n=0;
	cin>>n;
	vector<string> V;
	
	for(int i=1;i<=n;i++)
	{
		string temp;
		cin>>temp;
		V.push_back(temp);
	}
	//将输入的字符串存入vector容器中 
	
	
	for(int i=0;i<=n-1;i++)
	{
		string goal=V[i];
		for(int j=0;j<=goal.length()-1;j++)
		{
			Dx(j,goal[j]);
			//对每一个字母单独通过函数处理 
		}
		cout<<endl;
		//每处理完一段函数要换行 
	}
	return 0;
}

T1153——整数奇偶排列

  • 蒜术师给了你一个 10 个整数的序列,要求对其重新排序。排序要求:

1.奇数在前,偶数在后

2.奇数按从大到小排序

3.偶数按从小到大排序。

  • 输入格式:输入一行,包含 10 个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 100~
  • 输出格式:按照要求排序后输出一行,包含排序后的 10 个整数,数与数之间以一个空格分开

 这道题本来很简单,但是被我写复杂了,我用的是两个vector分别处理奇数和偶数,最后用algorithm头文件自带的sort和reverse函数直接处理好再拼凑在一起,其实用普通的数组自己写逻辑也很快能写出来,不过我现在的状态实在是不想思考逻辑了,本帖仅供参考,只能通过,不算高明的做法。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main(int argc, char** argv) 
{
	vector<int> V;
	
	for(int i=1;i<=10;i++)
	{
		int n=0;
		cin>>n;
		V.push_back(n);	
	}	
	
	vector<int> V1,V2;
	for(int i=0;i<=9;i++)
	{
		if(V[i]%2==1)
			V1.push_back(V[i]);
		else
			V2.push_back(V[i]);	
	} 
	
	V.clear();
	sort(V1.begin(),V1.end());
	sort(V2.begin(),V2.end());
	reverse(V1.begin(),V1.end());
	
	//空间换时间,并不是高明的做法
	//注意sort算法默认从小到大排序 
	
	for(int i=0;i<=V2.size()-1;i++)
	{
		V1.push_back(V2[i]);
	}
	for(vector<int>::iterator it=V1.begin();it!=V1.end();it++)
	{
		cout<<(*it)<<" ";
	}

	return 0;
}

T1249——漂亮的字符串

 题干如下:

  • 小蒜认为如果一个字符串中每个字符出现的次数都是偶数次,那么这个字符串是美丽的;现在给你一个字符串 s,长度不超过 100,请判断这个字符串是否是美丽的。
  • 输入格式:个字符串 8。
  • 输出格式:如果是美丽的字符串,输出"Yes",否则输出“No"

  根据题干描述,可以抽象出本题的核心目标:

小写只要26个字母在本字符串中均出现偶数次,则为美丽字符串。

#include <iostream>
#include <string>
using namespace std;
 
int main() 
{
	int num[26];
	for(int i=0;i<26;i++)
	{
		num[i]=0;
	}
	//初始化数组每个元素为0,分别统计每个小写字母出现的个数 
	
	string goal;
	cin>>goal;
	
	for(int i=0;i<=goal.length()-1;i++)
	{
		int temp=0;
		temp=goal[i]-97;
		num[temp]++;	
	} 
	
	/* 
	for(int i=0;i<=25;i++)
	{
		printf("%c的个数为:%d\n",(i+97),num[i]);
	}
	*/
	
	int doubt=1;
	//如果是完美字符串则为1 
	for(int i=0;i<=25;i++)
	{
		if(num[i]%2!=0)
		{
			doubt=0;
			//如果有一位不是偶数,则该字符串不为完美字符串 
			break;
		}
	}
	if(doubt==1)
		cout<<"Yes"<<endl;
	else
		cout<<"No"<<endl;

	return 0;
}

T1168——统计素数个数

具体题干看下图:

  • 蒜头君给定两个整数 X 和Y,输出两者之间的素数个数 (包括 X 和Y)。
  • 输入格式:两个整数X和Y (l < =X,Y <= 105) 。
  • 输出格式:输出一个整数,表示 X,Y 之间的素数个数 (包括 X 和Y)。
  • 提示信息:可能存在 X >=Y的情况;注意 1 不是素数

  详解如下:

#include <iostream>
using namespace std;

int PrimeNumber(int x)
{
	//定义一个函数,只需要完成对一个数是否为素数的判断
	//如果是0,则为素数,若为1则不为素数 
	for(int i=2;i<x;i++)
	{
		if(x%i==0){
			//能整除则说明不是素数 
			return 1;
			//返回1则代表不是素数 
			break;
		}		
	}
	return 0; 
}

int main() 
{		
	int x=0,y=0;
	int count=0;
	//输入范围和统计总数 
	cin>>x>>y;
	
	int temp=0;
	if(x>y)
	{
		temp=x;
		x=y;
		y=temp;	
	} 
	//保证x一定小于y 
	
	for(int i=x;i<=y;i++)
	{
		if(PrimeNumber(i)==0&&i!=1)
		//仔细看,1不是素数 
		{
			//cout<<i<<"是素数!"<<endl;
			count++;
			//如果符合条件则要加一 
		}		
	} 
	cout<<count<<endl;
	return 0;
}

T1160——甲流病人筛选

 

关于这道题还是比较简单的,没有涉及到算法,只需要对编程语言基础知识熟练掌握即可破解。

这里需要有两个重点:

1.存储病人的各项信息

此处我采用自定义结构体,定义一个病人类型的变量;对于不定长的n,我采用动态数组vector进行存储(当然,传统的面向对象和一维数组也可以实现这一功能)。

2.循环遍历判断

此处我采用的是STL的迭代器进行判断。

具体内容请看下列代码中的注释:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

struct patient{
	string name;
	float tem;
	bool health;
	//结构体,定义一个病人类型的变量,当然也可以用面向对象的class 
}; 

int main(int argc, char** argv) 
{
	int n=0;
	cin>>n;
	//输入需要判断的总人数 
	
	vector<patient> V1;
	//定义一个病人类型的动态数组
	patient p;
	//同时声明一个临时储存的病人变量
	
	
	for(int i=1;i<=n;i++)
	{
		cin>>p.name>>p.tem>>p.health;
		V1.push_back(p);
		//设置循环,将全部病人存在数组中 
	}
	
	int count=0;
	//统计被筛选的甲流病人总数 
	
	for(vector<patient>::iterator it=V1.begin();it!=V1.end();it++)
	{
		//迭代器遍历整个数组
		if((*it).tem>=37.5&&(*it).health==1)
		{
			cout<<(*it).name<<endl; 
			//如果同时满足则输出当前病人的名字 
			//(*it)为解引用,it为迭代器,类似指针的用法 
			count++;
			//同时筛选总人数+1 
		}	 
	}
	cout<<count<<endl;
	
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

搞怪python代码

微信消息重发代码&#xff1a; from pynput.keyboard import Key,Controller import time keyboard Controller()a input("请输入你需要循环输出的内容&#xff1a;") b eval(input(请输入你想要循环的次数&#xff1a;)) print("数据已接收&#xff01;请将…

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

目录 1解题思路&#xff1a; 2代码如下&#xff1a; 3运行结果&#xff1a; 4总结&#xff1a; 5介绍&#xff1a; 1解题思路&#xff1a; 利用循环&#xff08;穷举法&#xff09;来 对 所 需要的数 进行确定 2代码如下&#xff1a; #include <stdio.h>int main() …

【Python大数据笔记_day06_Hive】

hive内外表操作 建表语法 create [external] table [if not exists] 表名(字段名 字段类型 , 字段名 字段类型 , ... ) [partitioned by (分区字段名 分区字段类型)] # 分区表固定格式 [clustered by (分桶字段名) into 桶个数 buckets] # 分桶表固定格式 注意: 可以排序[so…

Java中的多态究竟是什么?

目录 一.概念二.使用条件三.重写1.概念2.使用条件3.与重载对比4.举例5.为什么需要重写1.重写规则 2.静态绑定--重载3.动态绑定--重写 四.向上转型第一种传参方式&#xff1a;直接赋值第二种传参方式&#xff1a;通过传参优缺点 五.向下转型举例缺点 六.多态的优缺点优点缺点 一…

ros1 基础学习08- 实现Server端自定义四 Topic模式控制海龟运动

一、服务模型 Server端本身是进行模拟海龟运动的命令端&#xff0c;它的实现是通过给海龟发送速度&#xff08;Twist&#xff09;的指令&#xff0c;来控制海龟运动&#xff08;本身通过Topic实现&#xff09;。 Client端相当于海龟运动的开关&#xff0c;其发布Request来控制…

Leetcode2833. 距离原点最远的点

Every day a Leetcode 题目来源&#xff1a;2833. 距离原点最远的点 解法1&#xff1a;贪心 要使得到达的距离原点最远的点&#xff0c;就看 left 和 right 谁大&#xff0c;将 left 和 right 作为矢量相加&#xff0c;再往同方向加上 underline。 答案即为 abs(left - rig…

vue-入门介绍

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容,初识vue入门到项目实战详解 目录 一.Vue介绍 二.初识Vue 工具安装 创建项目 目录结构介绍 项…

Adobe premiere裁剪视频尺寸并转为GIF格式

第一步&#xff1a;裁剪视频 修改序列设置以适应裁剪之后的图像区域&#xff1b;序列中的编辑模式不能使用默认的&#xff0c;这里使用的是“DNxHR_2K” 第二步&#xff1a;导出设置

SpringBoot集成easyexcel实现动态模板导出

添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-o…

AlGaN/GaN HFET 五参数模型

标题&#xff1a;A Five-Parameter Model of the AlGaN/GaN HFET 来源&#xff1a;IEEE TRANSACTIONS ON ELECTRON DEVICES&#xff08;15年&#xff09; 摘要—我们引入了AlGaN/GaN异质结场效应晶体管&#xff08;HFET&#xff09;漏极电流Id&#xff08;Vgs&#xff0c;Vds…

【Linux】Linux 中关于 MySQL 的相关操作

Linux 中关于 MySQL 的相关操作 Linux 系统与 MySQL 数据库是目前互联网开发中最为流行的组合之一。Linux 作为开源的操作系统&#xff0c;具有运行效率高、安全性好等优点&#xff1b;而 MySQL 作为开源的数据库&#xff0c;具有运行速度快、可靠性高等特点。 &#xff08;1&…

Spring Boot (三)

1、热部署 热部署可以替我们节省大把花在重启项目本身上的时间。热部署原理上&#xff0c;一个springboot项目在运行时实际上是分两个过程进行的&#xff0c;根据加载的东西不同&#xff0c;划分成base类加载器与restart类加载器。 base类加载器&#xff1a;用来加载jar包中的类…

个人技术支持

本人目前从事 cnc 自动编程相关职业&#xff0c;主要还是做上位机开发&#xff0c;2021年之前一直从事 Unity3d 开发&#xff0c;本来也是个游戏程序员&#xff0c;后面也是大环境不好&#xff0c;改做了上位机开发&#xff0c;没想到上位机行业现在也是这么不好找工作。 最近…

数据挖掘:分类,聚类,关联关系,回归

数据挖掘&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sql要学&…

计算机中怎么依据字节数组找到对应的字符

问题引入 将中文字符“你”用UTF-8编码转成字节数组后&#xff0c;为什么是这样的三个数字&#xff1f; byte[] bytes "你".getBytes(StandardCharsets.UTF_8);for (byte t:bytes){System.out.println(t);} 打印的结果如下&#xff1a; -28 -67 -96 你有没有很好…

多测师肖sir_高级金牌讲师_ui自动化po框架版本01

ui自动化po框架 一、po框架 1、基本介绍 &#xff08;1&#xff09;po模式是page object model的缩写&#xff08;简称&#xff1a;po或pom&#xff09; &#xff08;2&#xff09; po模式的核心思想&#xff1a;分层&#xff0c;实现耦合 实现&#xff1a;业务流程与页面元素操…

基于java+springboot+vue的幼儿园信息网站

项目介绍 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于幼儿园管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了幼儿园管理系统&#xff0c;它彻底改变了过…

[LeetCode] 5.最长回文子串

一、题目描述 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba&…

Python零基础小白常遇到的问题总结

文章目录 一、注意你的Python版本1.print()函数2.raw_input()与input()3.比较符号&#xff0c;使用!替换<>4.repr函数5.exec()函数 二、新手常遇到的问题1、如何写多行程序&#xff1f;2、如何执行.py文件&#xff1f;3、and&#xff0c;or&#xff0c;not4、True和False…

C语言----静态链接库和动态链接库

在前面的文章中讲到可执行程序的生成需要经过预处理&#xff0c;编译&#xff0c;汇编和链接四个步骤&#xff0c;链接阶段是链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。 需要解读一下库文件&#xff0c;我们可以将库文件等价为压缩包文件&…