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;
    } 
    

    第三周结束!!!

    欢迎查阅
  • 相关阅读:
    POJ_2387_最短路
    HDU_3172_带权并查集
    Python_多线程1(创建线程,简单线程同步)
    POJ_3013_最短路
    codeforces_725C_字符串
    python_文件io
    codeforces_731D_(前缀和)(树状数组)
    codeforces_738D
    java反射机制
    struts2入门
  • 原文地址:https://www.cnblogs.com/gh110/p/12430976.html
Copyright © 2011-2022 走看看