首页 > 其他分享 >全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用二)

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用二)

时间:2025-01-16 16:58:20浏览次数:3  
标签:信息学 新疗法 鸡尾酒 int 信奥赛 疗法 备考 数组 输入

实战训练1—统计相同的数

问题描述

在一次实验中产生了n个数据,现在统计这n个数据中与指定数字m相同的个数,请编程实现。

输入格式:

输入共三行:第一行为一个整数n,表示整数序列的长度(n<=100);第二行为n个整数,整数之间以一个空格分开;第三行包含一个整数,表示指定的数字m。

输出格式:

输出一行包含一个整数,表示为n个数中与m相同的数的个数。

输入输出样例:

输入样例1

输出样例1

5

2 3 1 4 3

3

2

输入样例2

输出样例2

8

1 2 3 1 3 2 1  1

1

4

问题分析:

根据题意,定义长度为n的最大值100的int类型数组来存储整数序列,然后输入整数序列的实际长度n,使用循环输入长度为n的整数并存储到数组中;然后输入m,使用循环依次遍历数组元素,判断数组元素是否和m相等,相等则修改一样的个数变量,具体程序代码如下:

#include<bits/stdc++.h>
using namespace std;
int main() {
	const int MAXLEN=100;//定义常变量MAXLEN表示数组的长度,并初始化为100表示最大个数
	int a[MAXLEN];//定义长度为MAXLEN的int类型数组
	int n;//定义整数序列的个数变量n
	scanf("%d",&n);//输入n的值
	for(int i=0; i<n; i++) { //输入数组元素
		scanf("%d",&a[i]);
	}
	int m,sum=0;//定义m以及与m一样的数的个数变量sum(并初始化为0) 
	cin>>m;//输入指定的数m 
	for(int i=0; i<n; i++) {//从下标为0开始到n-1 
		if(a[i] == m) {//判断a[i]的值是否和m相等 
			sum++;//两者相等则个数加1 
		}
	}
	printf("%d\n",sum);//输出一样的个数sum 
	return 0;
}

实战训练2—粗心的小明

问题描述:

粗心的小明不小心将一组数据的存放顺序弄反了,你可以帮他恢复吗?例如,原来的顺序为 8,6,5,4,1,修改为 1,4,5,6,8。

输入格式:

输入共两行:第一行为一个整数n,表示整数序列的长度(1<n<100);第二行为n个整数,整数之间以一个空格分开。

输出格式:

输出一行包含n个整数,表示逆序后数组的整数,每两个整数之间用空格分隔。

输入输出样例:

输入样例1

输出样例1

5

8 6 5 4 1

1 4 5 6 8

输入样例2

输出样例2

6

1 1 2 5 8 9

9 8 5 2 1 1

问题分析:

根据题意,定义长度为n的最大值100的int类型数组来存储整数序列,然后输入整数序列的长度n,然后使用循环为数组每个元素依次赋值,最后从最后一个元素开始到开始,依次输出每个数组元素,具体程序代码如下:


#include<bits/stdc++.h>
using namespace std;
int main(){
    const int MAXLEN=100;//定义常变量MAXLEN表示数组的长度,并初始化为100表示最大个数
    int a[MAXLEN];//定义长度为MAXLEN的int类型数组
    int n;//定义整数序列的个数变量n
    scanf("%d",&n);//输入n的值
    for(int i=0;i<n;i++){//使用循环从下标为0到n-1依次输入数组元素 
        scanf("%d",&a[i]);
    }
    for(int i=n-1;i>=0;i--){//使用循环从下标为n-到0依次输出数组元素 
        printf("%d ",a[i]);
    }
    return 0;
}

实战训练3—鸡尾酒疗法

问题描述:

鸡尾酒疗法,指“高效抗逆转录病毒治疗”。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的有效率为 x,新疗法的有效率为y;如果y−x>5%,则效果更好,如果 x−y>5%,则效果更差,否则称为效果差不多。

下面给出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他 n−1 组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

输入格式:

输入共n+1行:第一行为一个整数n(1<n<=20),表示鸡尾酒疗法和新疗法的总个数;接下来的n行,每行包含两个整数,第一个整数是临床实验的总病例数(小于等于10000 ),第二个疗效有效的病例数,这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。

输出格式:

输出共n-1行,分别表示对应改进疗法的效果:如果效果更好,输出beter;如果效果更差,输出worse;否则输出same。。

输入输出样例:

输入样例1

输出样例1

5

125 99 

112 89

145 99

99 97

123 98

same

worse

better

same

问题分析:

根据题意,要比较鸡尾酒疗法和剩余n-1种新疗法进行比较,并将比较结果输出,首先定义一个长度为20的整数数组,数组的取值为0、1、2,其中0表示新疗法的效果更好,1表示两种疗法效果差不多,2表示新疗法的效果更差,然后先先求解出鸡尾酒疗法的效果,接着使用循环去输入剩余n-1种新疗法的病例数和有效病例数,求出该新疗法的效果,并和鸡尾酒疗法比较存入数组中,最后使用循环依次去遍历数组中的整数值,并转换成对应的单词输出,具体程序代码如下:


#include <bits/stdc++.h>
using namespace std; 
int main() {
    const int MAXLEN=20;//定义常变量MAXLEN表示数组的长度,并初始化为20表示最大个数
    int a[MAXLEN]; //定义长度为MAXLEN的int类型数组,表示哪个疗法好 
    int n;//定义整数变量n 
    scanf("%d",&n); //输入n的值  
    int count, yxcount;// 临床实验的总病例数变量count和有效的病例数变量yxcount 
    scanf("%d%d",&count,&yxcount);//输入鸡尾酒疗法的count和yxcount 
    double x = yxcount * 1.0 / count;//定义鸡尾酒疗法的效果变量x,并求解x的值 
    double y; //定义新疗法的效果变量y 
    for (int i = 0; i < n - 1; ++i){//接下来依次输入n-1个新疗法的数据 
    	scanf("%d%d",&count,&yxcount);//输入新疗法的count和yxcount 
		y =  yxcount * 1.0 / count;//求解新疗法的效果y 
		if (y > x && (y - x > 0.05)){//如果新疗法效果y比鸡尾酒疗法效果x大,并且多余0.05 
			a[i] = 0;//0:表示新疗法更好 
		}else if (y < x && (x-y > 0.05)){//如果新疗法效果y比鸡尾酒疗法效果x小,并且少于0.05 
			a[i] = 2;//2:表示鸡尾酒疗法好 
		}else{
			a[i] = 1;//1:表示两者效果差不多 
		}
	} 
     for (int i = 0; i < n - 1; ++i){//然后输出n-1种新疗法和鸡尾酒疗法的效果 
		if (a[i] == 0){
			printf("better\n");
		}else if (a[i] == 1){
			printf("same\n");
		}else{
			printf("worse\n");
		}
	}
      return 0; 
}

标签:信息学,新疗法,鸡尾酒,int,信奥赛,疗法,备考,数组,输入
From: https://blog.csdn.net/ALISHENGYA/article/details/145187121

相关文章

  • 信息学奥赛一本通 1104:计算书费
    有点傻的方法​#include<bits/stdc++.h>usingnamespacestd;intmain(){doublea,b,c,d,e,f,g,h,j,k,res; cin>>a>>b>>c>>d>>e>>f>>g>>h>>j>>k; a=a*28.9; b=b*32.7; c=c*45.6; d=d*78; e=e*35;......
  • 【西南石油大学电气信息学院主办,EI检索稳定 | SPIE (ISSN: 0277-786X)出版】2025年计
    2025年计算机视觉研究进展与应用国际学术会议(ACVRA2025)2025InternationalConferenceonAdvancesinComputerVisionResearchandApplications2025年2月28-3月2日广州会议官网:www.acvra.org【更多详情】EI检索稳定| 西南石油大学电气信息学院主讲嘉宾:孟......
  • 信息学奥赛考试大纲之CSP-J信息学奥赛考试大纲(入门级)
    信息学奥赛考试大纲CSP-J信息学奥赛考试大纲(入门级)1.计算机基础与编程环境2.C++程序设计2.1程序基本概念2.2基本数据类型2.3程序基本语句2.4基本运算2.5数学库常用函数2.6结构化程序设计2.7数组2.8字符串的处理2.9函数与递归2.10结构体与联合体2.11指针类型2.12文件及基本......
  • 关于我怎样备考期末考试
    我在b站上找了很多的视频,然后最后决定用前后端分离的方式写java期末1idea后端datasourcesanddrivers连接数据库1.复制粘贴controller一般后面调试还要调2.a.写一个实体类(数据库:is_publish,实体类:isPublish)(实体类:ReadingProposal)b.extend下面写一个拓展查询类,…dto,需......
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(while循环应用)
    到目前为止,所有的训练题目中给出的输入数据个数是确定的,但是有时候输入数据个数不确定,这种情况下,需要不断读取数据直到没有新的输入数据为止,那么C++是如何判断出读到文件末尾(或者没有新的输入)了呢?在C++中使用"EOF"(endoffile)来实现,代表文件(file)或者标准输入(stdin)的结尾,读入语......
  • 【2025年|国际会议推荐】方向涉及人工智能、通信工程、控制工程、生物信息学、智能计
    【2025年1|国际会议推荐】方向涉及人工智能、通信工程、控制工程、生物信息学、智能计算、能源、自动化、大数据、管理学、信息化教育、计算机技术…【2025年|国际会议推荐】方向涉及人工智能、通信工程、控制工程、生物信息学、智能计算、能源、自动化、大数据、管理学、......
  • 信息学奥赛一本通汇总
    「基础算法」第1章递推算法博客链接总结:一般有具体的情境,可以通过直接的模拟转移过程来实现递推,T2,T4,T9找到已知状态和所求状态的差别和联系,想办法将所求转化为已知进行转移,一般要用到分讨,T1,T3根据题目将问题转化,增维,然后转化后进行递推,T8第2章贪心算法博客链接总结:......
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(while循环语句)
    在C++编程中,循环结构是控制程序流程的重要工具之一。前面介绍了for循环相关内容,对于for循环来讲,可以明确循环变量的初始值和终值,即可以确定循环的次数,对于循环次数不确定的情况,可以使用while循环来解决,while循环作为最基本的循环结构之一,允许代码在满足特定条件时重复执行。本......
  • 信息学奥赛一本通1100金币(C语言代码)
    文章目录一、题目二、代码1.代码一2.代码二一、题目二、代码1.代码一#include<stdio.h>intmain(){intdays;scanf("%d",&days);intsum=0;//记录总的金币数intcountdays=1;intcoin=1;while(days>0){......
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句)(六)
    实战训练1—输出九九乘法表问题描述:在学校里学过九九乘法表,编程实现打印九九乘法表。输入格式:无输入输出格式:1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=......