信息学奥赛

信息学奥赛C++语言:求平均年龄

匿名 (未验证) 提交于 2019-12-02 23:36:01
【题目描述】 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。 【输入】 第一行有一个整数n(1≤ n ≤ 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。 【输出】 输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。 【输入样例】 2 18 17 【输出样例】 17.50 代码 #include<cstdio> using namespace std; int n,m,i; double s=0; int main() { scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&m); s=s+m; } printf("%.2lf",s/n); return 0; } 文章来源: https://blog.csdn.net/zsbailong/article/details/90741197

信息学奥赛C++语言:奇数求和

匿名 (未验证) 提交于 2019-12-02 23:36:01
【题目描述】 计算非负整数m到n(包括m和n)之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35。 【输入】 两个数 m 和 n,两个数以一个空格分开,其中 0 ≤ m ≤ n ≤ 300 。 【输出】 输出一行,包含一个整数,表示m 到 n(包括m 和 n )之间的所有奇数的和。 【输入样例】 7 15 【输出样例】 55 代码 #include<cstdio> using namespace std; int n,m,s=0; int main() { scanf("%d%d",&m,&n); for(int t=m;t<=n;t++) { if(t%2!=0) { s=s+t; } } printf("%d",s); return 0; } 文章来源: https://blog.csdn.net/zsbailong/article/details/90741171

信息学奥赛C++语言:奇数1

匿名 (未验证) 提交于 2019-12-02 23:36:01
【题目描述】 输出a到b之间的奇数。奇数是一种数学术语,整数中,能被2整除的数是偶数,不能被2整除的数是奇数,奇数包括正奇数、负奇数。其中注意:0不是奇数,是偶数。 【输入】 输入共1行,用空格分隔的整数a和b。(-20000<=a<=b<=20000)。 【输出】 输出n行。每行一个区间a到b中的奇数(从小到大输出)。 【输入样例】 【样例输入1】2 5 【样例输入2】-1 8 【输出样例】 【样例输出1】 3 5 【样例输出2】 -1 1 3 5 7 * 代码 #include<cstdio> using namespace std; int n,m,t=0; int main() { scanf("%d%d",&m,&n); for(int i=m;i<=n;n++) { if(i%2!=0) t=t+i; } printf("%d",t); return 0; } 文章来源: https://blog.csdn.net/zsbailong/article/details/90741146

信息学奥赛C++语言:由大到小输出1~100的整数

匿名 (未验证) 提交于 2019-12-02 23:36:01
【题目描述】 由大到小输出1~100的所有整数,要换行。 【输入】 无 【输出】 由大到小输出1~100的所有整数,要换行。 【输入样例】 无 【输出样例】 100 99 … 1 代码 #include<cstdio> using namespace std; int a; int main() { for(a=100;a>=1;a=a-1) printf("%d\n",a); return 0; } 文章来源: https://blog.csdn.net/zsbailong/article/details/90741086

信息学奥赛一本通 高手训练1 游戏通关

大城市里の小女人 提交于 2019-11-30 05:09:36
游戏通关 【题目描述】 XY在玩一个包含N个任务的游戏。每个任务完成时限为Ti(你可以认为还没开始做任务时的时间为0),奖励为Wi。由于XY技术的娴熟以及任务的简单,对于每个任务,他都可以在一个单位时间内完成。 XY想要知道他能够获得的最多的奖励。 【输入】 第一行一个整数N,表示需要完成的任务数目。 接下来N行,每行两个整数T、W,分别表示完成这个任务的最后期限和完成这个任务后获得的奖励。 【输出】 输出数据有且仅有一行,只包含一个整数,表示最多获得的奖励。 【输入样例】 2 1 5 1 4 【输出样例】 5 【样例输入2】 5 2 3 1 2 4 5 1 3 3 4 【样例输出2】 15 【样例解释2】 对于样例2,XY可以选择完成任务1、3、4和5,这样他可以获得奖励15。 【数据规模及约定】 对于10%的数据,N≤100,Ti≤100,Wi≤2000。 对于30%的数据,N≤1000,Ti≤5000,Wi≤2000。 对于50%的数据,N≤10000,Ti≤20000,Wi≤2000。 对于100%的数据,N≤200000,Ti≤200000,Wi≤2000。 【思路】 贪心 + 大根堆的题目,感jio一本通就喜欢贪心 + 大根堆的题目 瞎说的 比较好想的贪心题目 因为这个在每一个单位时间内都可以得到一个奖励 所以只需要将每个单位时间内能够得到的最高的奖励累加起来就好了

Biorhythms(信息学奥赛一本通 1639)

梦想与她 提交于 2019-11-28 12:47:11
题目描述: 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。 输入格式: 输入四个整数:p, e, i和d。 p, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d 是给定的时间,可能小于p, e, 或 i。 当p = e = i = d = -1时,输入数据结束。 输出格式: 从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。 采用以下格式: Case 1: the next triple peak occurs in 1234 days. 注意:即使结果是1天,也使用复数形式“days”。 样例输入: 0 0 0 0 0 0 0 100 5 20 34 325

青蛙的约会(信息学奥赛一本通 1631)(洛谷 1516)

自作多情 提交于 2019-11-28 12:39:28
题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。 输入格式 输入只包括一行5个整数x,y,m,n,L 其中0<x≠y < =2000000000,0 < m、n < =2000000000,0 < L < =2100000000。 输出格式 输出碰面所需要的天数,如果永远不可能碰面则输出一行"Impossible"。 输入输出样例 输入 #1 1 2 3 4 5 输出 #1 4 这道题呢就是很显然的 拓展欧几里得算法的应用 。

信息学奥赛C++语言:素数的判定

萝らか妹 提交于 2019-11-27 22:03:37
【题目描述】 输入一个正整数,判断其是否为素数。如果是,则输出“prime”;否则,输出“not prime” 。 【输入】 一行一个正整数 n,2≤n≤10^7 。 【输出】 一行一个字符串。 【输入样例】 8 【输出样例】 not prime 代码 #include<cstdio> using namespace std; int a; int main() { scanf("%d",&a); for(int i=2;i<a;i++) if(a%i==0) { printf("not prime"); return 0; } printf("prime"); return 0; } 来源: https://blog.csdn.net/zsbailong/article/details/99759386

信息学奥赛C++语言:计算书费

余生长醉 提交于 2019-11-27 22:03:23
【题目描述】 下面是一个图书的单价表: 计算概论 28.9元/本 数据结构与算法 32.7元/本 数字逻辑 45.6元/本 C++程序设计教程 78元/本 人工智能 35 元/本 计算机体系结构 86.2元/本 编译原理 27.8元/本 操作系统 43元/本 计算机网络 56元/本 JAVA程序设计 65元/本 给定每种图书购买的数量,编程计算应付的总费用。 【输入】 输入一行,包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。 【输出】 输出一行,包含一个浮点数f,表示应付的总费用。精确到小数点后一位。 【输入样例】 1 5 8 10 5 1 1 2 3 4 【输出样例】 2140.2 代码 #include<cstdio> using namespace std; double a[10]{28.9,32.7,45.6,78,35,86.2,27.8,43,56,65},b[10],s; int main() { for(int i=0;i<10;i++) { scanf("%lf",&b[i]); s=s+a[i]*b[i]; } printf("%

信息学奥赛C++语言:数组逆序重存放

喜你入骨 提交于 2019-11-27 22:03:21
【题目描述】 将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。 【输入】 输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。 【输出】 输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。 【输入样例】 5 8 6 5 4 1 【输出样例】 1 4 5 6 8 代码 #include <cstdio> using namespace std; int a[100],n,i; int main() { scanf("%d",&n); for(i=0;i<=n-1;i++) scanf("%d",&a[i]); for(i=n-1;i>=0;i--) printf("%d ",a[i]); return 0; } 来源: https://blog.csdn.net/zsbailong/article/details/99714545