一、实操题
1、鸡尾酒疗法
【题目描述】
鸡尾酒疗法,指“高效抗逆转录病毒治疗”。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。
【输入】
第一行为整数n(1<n<=20);其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。
【输出】
有n-1行输出,分别表示对应改进疗法的效果:如果效果更好,输出better;如果效果更差,输出worse;否则输出same。
参考答案:br />对于每一组改进疗法,首先计算鸡尾酒疗法和新疗法的有效率,然后根据有效率的大小关系,判断新疗法的效果。具体步骤如下:1. 读取输入数据,获取临床实验的总病例数和疗效有效的病例数。2. 计算鸡尾酒疗法和新疗法的有效率,分别记为x和y。3. 判断y-x和x-y的大小关系,根据题目要求输出对应的结果。
解析:【喵呜刷题小喵解析】
本题是一道关于临床对照实验的问题,需要根据输入数据判断各种改进疗法的效果。具体步骤如下:
1. 读取输入数据,获取临床实验的总病例数和疗效有效的病例数。这个过程需要按照题目要求的格式读取数据,并且要注意数据的有效性,例如临床实验的总病例数应该大于0,疗效有效的病例数应该小于等于临床实验的总病例数。
2. 计算鸡尾酒疗法和新疗法的有效率。有效率是指疗效有效的病例数除以临床实验的总病例数,用数学表达式表示就是x = 有效病例数 / 总病例数。
3. 判断新疗法的效果。根据题目要求,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。根据这个判断条件,我们可以编写一个判断函数,根据y-x和x-y的大小关系,输出对应的结果。
在编程实现时,需要注意输入数据的读取、有效率的计算、以及判断条件的编写。在输出时,需要按照题目要求的格式输出对应的结果。
2、买房子
【题目描述】
某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子(第一年房价200万,收入N万)
【输入】
有多行,每行两个整数N(10<=N<=50), K(1<=K<=20)
【输出】
针对每组数据,如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible,输出需要换行
参考答案:br />对于每一组输入N和K,首先计算每年攒下的钱数,然后计算每年房价的增长,然后判断在20年内是否能攒够钱数买下房子。如果能,输出最早需要M年,否则输出Impossible。
解析:【喵呜刷题小喵解析】
首先,我们需要理解题目的要求。题目要求程序员在年薪N万的情况下,每年将全部收入积攒起来,用于购买每年价格增长K%的60平米的房子。我们需要判断他能否在20年内买下这套房子,如果能,需要输出最早需要M年,否则输出Impossible。
接下来,我们根据题目的输入和输出要求,我们可以设定以下算法:
1. 读取每一组输入N和K,分别代表程序员的年薪和房价的年增长率。
2. 计算每年程序员攒下的钱数,即每年年薪N万。
3. 计算每年房价的增长,即初始房价200万乘以(1+K/100)。
4. 从第一年开始,逐年累加程序员攒下的钱数和房价的增长,判断是否能买下房子。如果能买下,输出最早需要M年,否则继续累加。
5. 如果在20年内能买下房子,输出最早需要M年,否则输出Impossible。
这个算法的时间复杂度是O(20),因为最多需要判断20年是否能买下房子。空间复杂度是O(1),因为只需要存储一些变量,不需要额外的空间。
3、药房管理
【题目描述】
对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。
【输入】
共 3 行,第一行是每天开始时的药品总量 m。
第二行是这一天取药的人数 n(0<n≤100)。
第三行共有 n 个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序)。
【输出】
只有 1 行,为这一天没有取上药品的人数。
参考答案:对于这个问题,我们可以按照以下步骤进行解答:1. 首先,我们读取每天开始时的药品总量m。2. 接着,我们读取这一天取药的人数n。3. 然后,我们按照时间先后的顺序读取每个病人希望取走的药品数量,依次判断当前库存是否足够满足该病人的需求。如果库存不足,则记录没有取上药品的人数。4. 最后,我们输出这一天没有取上药品的人数。
解析:【喵呜刷题小喵解析】:
这个问题是一个关于药房管理的问题,我们需要根据输入的药品总量和病人取药的需求,计算出没有取上药品的人数。
首先,我们需要读取每天开始时的药品总量m,这表示当天药品的起始库存量。然后,我们需要读取这一天取药的人数n,这表示当天有多少病人前来取药。接着,我们需要按照时间先后的顺序读取每个病人希望取走的药品数量,依次判断当前库存是否足够满足该病人的需求。如果库存不足,则记录没有取上药品的人数。最后,我们输出这一天没有取上药品的人数。
在判断库存是否足够满足该病人的需求时,我们可以使用一个循环来遍历每个病人,依次判断当前库存是否大于等于该病人希望取走的药品数量。如果库存不足,则将该病人计入没有取上药品的人数中。最后,我们输出没有取上药品的人数即可。
需要注意的是,这个问题中没有涉及到进货的情况,即一天之内不会通过进货的方式增加库存量。因此,我们可以直接使用输入的药品总量和病人取药的需求进行计算。
4、回文三位数
【题目描述】
如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。
【输入】
(无)
【输出】
所有的既是回文数又是素数的三位数。一个数一行。
参考答案:br />```2 9 57 57```
解析:【喵呜刷题小喵解析】
根据题目描述,我们需要找出所有的既是回文数又是素数的三位数。回文数是指从左往右读和从右往左读都是同一个数的数,素数是指除了1和它本身以外不再有其他因数的数。
首先,我们需要编写一个程序来检查一个数是否是回文数。对于三位数,我们可以将其拆分为百位、十位和个位,然后比较它们是否相等。
其次,我们需要编写一个程序来检查一个数是否是素数。我们可以从2开始,一直检查到该数的平方根,看是否有其他因数。
最后,我们将这两个程序结合起来,遍历所有的三位数,找出既是回文数又是素数的数,并将它们输出。
在这个例子中,既是回文数又是素数的三位数有2、3、5、7这四个数,但在这个范围内只有295和757是三位数,所以最终答案是295和757。
5、我家的门牌号
【题目描述】
我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。
若其余各家的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。数据保证有唯一解。
【输入】
一个正整数n。n<100000。
【输出】
一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
参考答案:根据题目描述,我们可以通过计算来找出我家的门牌号和总共有多少家。
解析:【喵呜刷题小喵解析】:
根据题目描述,我们可以设我家的门牌号为x,胡同里总共有n家。根据题目中的条件,其余各家的门牌号之和为n-x,所以我们可以得到方程:
n - x - 2x = n
整理得:
3x = n
所以,x = n/3
再计算胡同里总共有多少家:
总共有n家,减去我家,剩余n-1家。所以胡同里总共有n-x+1=n-(n/3)+1=(2n+3)/3家。
由于题目保证有唯一解,所以当n不能被3整除时,胡同里不可能有整数家,所以n必须能被3整除。因此,我们可以通过n/3计算出我家的门牌号,然后通过(2n+3)/3计算出胡同里总共有多少家。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!