zoukankan      html  css  js  c++  java
  • 程序设计与算法(一)第3周测验(2020春季)

    001:奇偶数判断

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 给定一个整数,判断该数是奇数还是偶数。

    输入

    • 输入仅一行,一个大于零的正整数n。

    输出

    • 输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。

    样例输入

    • 5

    样例输出

    • odd

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int n;
    	scanf("%d",&n); 
    	if(n%2==0)	printf("even
    ");
    	else	printf("odd
    ");
    	return 0;
    }
    

    002:求一元二次方程的根

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 利用公式x1 = (-b + sqrt(bb-4ac))/(2a), x2 = (-b - sqrt(bb-4ac))/(2a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。

    输入

    • 输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数。

    输出

    • 输出一行,表示方程的解。
    • 若b2 = 4 * a * c,则两个实根相等,则输出形式为:x1=x2=…。
    • 若b2 > 4 * a * c,则两个实根不等,则输出形式为:x1=…;x2 = …,其中x1>x2。
    • 若b2 < 4 * a * c,则有两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,即x1的虚部系数大于等于x2的虚部系数,实部为0时不可省略。实部 = -b / (2a), 虚部 = sqrt(4ac-bb) / (2*a)
    • 所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。

    样例输入1

    • 1.0 2.0 8.0

    样例输入2

    • 1 0 1

    样例输出1

    • x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

    样例输出2

    • x1=0.00000+1.00000i;x2=0.00000-1.00000i

    AC

    #include<stdio.h>/*求一元二次方程的根*/
    #include<math.h>
    int main(){
    double a,b,c;
    scanf("%lf %lf %lf",&a,&b,&c);
    if(b*b == 4*a*c){
    printf("x1=x2=%.5lf",(0-b+sqrt(b*b-4*a*c))/(2*a));
    }else  if(b*b > 4*a*c){
    double x1 = (0-b+sqrt(b*b-4*a*c))/(2*a);
    double x2 = (0-b-sqrt(b*b-4*a*c))/(2*a);
    printf("x1=%.5lf;x2=%.5lf",x1,x2);
    }else if(b*b < 4*a*c){
    double shi = (0-b) / (2*a);
    double xu1 = sqrt(4*a*c-b*b) / (2*a);
    printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi",shi,xu1,shi,xu1);
    }
    return 0;
    }
    

    003:点和正方形的关系

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。

    输入

    • 输入一行,包括两个整数x、y,以一个空格分开,表示坐标(x,y)。

    输出

    • 输出一行,如果点在正方形内,则输出yes,否则输出no。

    样例输入

    • 1 1

    样例输出

    • yes

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int x,y;
    	scanf("%d %d",&x,&y);
    	if((x<=1 && x>=(-1))&& (y<=1 && y>=(-1)))	printf("yes
    ");
    	else	printf("no
    ");
    	return 0;
    }
    

    004:苹果和虫子2

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

    输入

    • 输入仅一行,包括n,x和y(均为整数)。

    输出

    • 输出也仅一行,剩下的苹果个数

    样例输入

    • 10 4 9

    样例输出

    • 7

    提示

    • 注意:是要求完整的苹果数。

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int n,x,y,left;
    	scanf("%d %d %d",&n,&x,&y);
    	if(y%x==0)
    		left=n-y/x;
    	else
    		left=n-y/x-1;	
    	if(left<0)	left=0;	//考虑如果吃完了? 
    	printf("%d
    ",left);
    	return 0;
    }
    

    005:简单计算器

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。

    输入

    • 输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。
      ##输出
    • 输出只有一行,一个整数,为运算结果。然而:
    1. 如果出现除数为0的情况,则输出:Divided by zero!
    2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

    样例输入

    • 1 2 +

    样例输出

    • 3

    提示

    • 可以考虑使用if和switch结构。

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int a,b;
    	char c;
    	scanf("%d %d %c",&a,&b,&c);
    	if(b==0)	printf("Divided by zero!
    ");
    	else{
    		switch(c){
    			case '+':
    				printf("%d
    ",a+b);
    				break;
    			case '-':
    				printf("%d
    ",a-b);
    				break;
    			case '*':
    				printf("%d
    ",a*b);
    				break;
    			case '/':
    				printf("%d
    ",a/b);
    				break;
    			default:
    				printf("Invalid operator!
    ");
    		}
    	}
    	return 0;
    } 
    

    006:求整数的和与均值

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 读入n(1 <= n <= 10000)个整数,求它们的和与均值。

    输入

    • 输入第一行是一个整数n,表示有n个整数。
    • 第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

    输出

    • 输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。

    样例输入

    4
    344
    222
    343
    222
    

    样例输出

    • 1131 282.75000

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int n,m,sum=0;
    	scanf("%d",&n);
    	for(int i=0;i<n;i++){
    		scanf("%d",&m);
    		sum += m;
    	}
    	printf("%d %.5lf
    ",sum,(double)sum/n);
    	return 0;
    }
    

    007:整数序列的元素最大跨度值

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

    输入

    • 一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。

    输出

    • 输出一行,表示序列的最大跨度值。

    样例输入

    6
    3 0 8 7 5 9
    

    样例输出

    • 9

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int n,m,min=1001,max=0;
    	scanf("%d",&n);
    	for(int i=0;i<n;i++){
    		scanf("%d",&m);
    		if(max<m)	max=m;
    		if(min>m)	min=m;
    	} 
    	printf("%d
    ",max-min);	
    	return 0;
    } 
    

    008:奥运奖牌计数

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。

    输入

    • 输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。

    输出

    • 输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。

    样例输入

    3
    1 0 3
    3 1 0
    0 3 0
    

    样例输出

    • 4 4 3 11

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int n,j,y,t,s1=0,s2=0,s3=0;
    	scanf("%d",&n);
    	for(int i=0;i<n;i++){
    		scanf("%d %d %d",&j,&y,&t);
    		s1 += j;
    		s2 += y;
    		s3 += t;
    	} 
    	printf("%d %d %d %d
    ",s1,s2,s3,s1+s2+s3);
    	return 0;
    }
    

    009:乘方计算

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 给出一个整数a和一个正整数n,求乘方an。

    输入

    • 一行,包含两个整数a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。

    输出

    • 一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。

    样例输入

    • 2 3

    样例输出

    • 8

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int a,n,str;
    	scanf("%d %d",&a,&n);
    	str=a;
    	for(int i=2;i<=n;i++)
    		str *= a;
    	printf("%d
    ",str);
    	return 0;
    }
    

    010:鸡尾酒疗法

    • 总时间限制: 1000ms 内存限制: 65536kB

    描述

    • 鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾 滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生 命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式 进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给 出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

    输入

    • 第一行为整数n( 1 < n <= 20);
    • 其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。
    • 这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。

    输出

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

    样例输入

    5
    125 99
    112 89
    145 99
    99 97
    123 98
    

    样例输出

    same
    worse
    better
    same
    

    AC

    #include <iostream>
    using namespace std;
    int main(){
    	int n,s1,s2;
    	double x=0,y=0;
    	scanf("%d",&n);
    	scanf("%d %d",&s1,&s2);
    	x=s2*1.0/s1;
    	for(int j=2;j<=n;j++){
    		scanf("%d %d",&s1,&s2);
    		y=s2*1.0/s1;
    		if(y-x>0.05)	printf("better
    ");
    		else{
    			if(x-y>0.05)	printf("worse
    ");
    			else	printf("same
    ");
    		}
    	}
    	return 0;
    } 
    

    第三周结束!!!

    欢迎查阅
  • 相关阅读:
    @RequestParam注解使用:Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
    cglib动态代理导致注解丢失问题及如何修改注解允许被继承
    springboot Autowired BeanNotOfRequiredTypeException
    git根据用户过滤提交记录
    不同包下,相同数据结构的两个类进行转换
    How to use Jackson to deserialise an array of objects
    jooq实践
    java如何寻找main函数对应的类
    Python--matplotlib
    Python 和 Scikit-Learn
  • 原文地址:https://www.cnblogs.com/gh110/p/12430976.html
Copyright © 2011-2022 走看看