0
点赞
收藏
分享

微信扫一扫

Java openjudge javastudy 2

皮皮球场 2022-03-12 阅读 28
java算法

13:计算书费

描述

下面是一个图书的单价表:
计算概论 28.9 元/本
数据结构与算法 32.7 元/本
数字逻辑 45.6元/本
C++程序设计教程 78 元/本
人工智能 35 元/本
计算机体系结构 86.2 元/本
编译原理 27.8元/本
操作系统 43 元/本
计算机网络 56 元/本
JAVA程序设计 65 元/本
给定每种图书购买的数量,编程计算应付的总费用。

输入

输入第一行包含一个正整数k(0<k<100),表示有k组测试数据;接下来k行,每行包含一组测试数据。每组测试数据包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。

输出

对于每组测试数据,输出一行。该行包含一个浮点数f,表示应付的总费用。精确到小数点后两位。
可用printf("%.2f\n", sum)来输出sum的值,并精确到小数点后两位。

样例输入

样例输出

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		double[] price = {28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};//利用数组整理书的价格
		int k = in.nextInt();
		double sum = 0;
		for(int i=1;i<=k;i++)    //k种购买方案
		{
			sum = 0;
			for(int j=0;j<10;j++)
			{
				double num = in.nextInt();   //各类书所购买数量
				sum += num*price[j];     
			}
		System.out.printf("%.2f\n",sum);
		}
	}
}

 14:整数的个数

描述

给定k(1< k < 100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。

输入

输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。

输出

输出有三行,第一行为1出现的次数,,第二行为5出现的次数,第三行为10出现的次数。

样例输入

样例输出

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int[] num = new int[101];
		int a=0;   //1的个数
		int b=0;   //5的个数
		int c=0;   //10的个数
		int k = in.nextInt();
		for(int i=1;i<=k;i++)
		{
			num[i] = in.nextInt(); //输入数组
			if(num[i]==1)
				a = a+1;
			else if(num[i]==5)
				b = b+1;
			else if(num[i]==10)
				c = c+1;	
		}
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
}

 15:整数的立方和

描述

给定一个正整数k(1<k<10),求1到k的立方和m。即m=1+2*2*2+…+k*k*k。

输入

输入只有一行,该行包含一个正整数k。

输出

输出只有一行,该行包含1到k的立方和。

样例输入

样例输出

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int sum = 0;
		int k = in.nextInt();
		for(int i=1;i<=k;i++)
		{
			sum += i*i*i;	
		}
		System.out.println(sum);
	}
}

 16:化验诊断

描述

下表是进行血常规检验的正常值参考范围,及化验值异常的临床意义:



给定一张化验单,判断其所有指标是否正常,如果不正常,统计有几项不正常。化验单上的值必须严格落在正常参考值范围内,才算是正常。正常参考值范围包括边界,即落在边界上也算正常。

输入

输出

对于每组测试数据,输出一行。如果所有检验项目正常,则输出:normal;否则输出不正常的项的数目。

样例输入

样例输出

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int k = in.nextInt();
		String[] result = new String[k];
		for (int i = 0; i < k; i++) {
			String sex = in.next();
			double WBC = in.nextDouble();
			double RBC = in.nextDouble();
			double HGB = in.nextDouble();
			double HCT = in.nextDouble();
			double PLT = in.nextDouble();
			int n = 0;
			if (WBC < 4.0 || WBC > 10.0)
				n++;
			if (RBC < 3.5 || RBC > 5.5)
				n++;
			if (PLT < 100 || PLT > 300)
				n++;
			if ("male".equals(sex)) {
				if (HGB < 120 || HGB > 160)
					n++;
				if (HCT < 42 || HCT > 48)
					n++;
			} else if ("female".equals(sex)) {
				if (HGB < 110 || HGB > 150)
					n++;
				if (HCT < 36 || HCT > 40)
					n++;
			}
			if (n == 0)
				result[i] = "normal";
			else
				result[i] = String.valueOf(n);
		}
		for (int i = 0; i < k; i++) {
			System.out.println(result[i]);
		}
	}
}

 17:求分数序列和

描述

有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。

输入

输入有一行:正整数n。

输出

输出有一行:分数序列的和(浮点数,精确到小数点后4位)。
可以printf("%.4lf\n", a)输出浮点数并精确到小数点后4位。

样例输入

样例输出

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		double sum = 3.5;
		double[] a = new double[1010];
		double[] b = new double[1010];
		a[1] = 2;
		a[2] = 3;
		b[1] = 1;
		b[2] = 2;
		for (int i = 3; i <= n; i++) {
			a[i] = a[i - 1] + a[i - 2];
			b[i] = b[i - 1] + b[i - 2];
			sum = sum + a[i] / b[i] * 1.0;
		}
		System.out.printf("%.4f", sum);
	}

}

18:求阶乘的和

描述

给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!)

输入

输入有一行,包含一个正整数n(1 < n < 12)。

输出

输出有一行:阶乘的和。

样例输入

样例输出

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int sum = 0;
		int s = 1;
		for(int i=1;i<=n;i++)
		{
			s = s*i;	
			sum = sum + s;
		}
		System.out.println(sum);
	}
}

19:打印完数

描述

一个数如果恰好等于它的因子之和,这个数就成为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序打印出1000之内(包括1000)所有的完数,并按如下格式输出其所有因子:

6 its factors are 1,2,3

输入

无输入

输出

输出1000以内所有的完数及其因子,每行一个完数。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int sum;
		for (int i = 1; i <= 1000; i++) {
			sum = 0;
			for (int j = 1; j < i; j++) {
				if (i % j == 0) {
					sum = sum + j;
				}
			}
			if (sum == i) {
				System.out.print(i + " its factors are ");
				for (int j = 1; j < i; j++) {
					if (i % j == 0) {
						sum = sum - j;
						if (sum == 0) 
							System.out.print(j);
							else  System.out.print(j + ",");
					}
				}
				System.out.println();
			}
		}
	}
}

20:数组逆序重放

描述

将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。

输入

输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。

输出

输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。

样例输入

样例输出

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[] group= new int[n];
		for(int i=0;i<n;i++)
		{
			group[i] = in.nextInt();
		}
        for (int i = n-1; i >= 0; i--) {
            System.out.print(group[i]+" ");
        }
	}
}

21:与7无关的数

描述

一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n < 100)的与7无关的正整数的平方和.

输入

输入为一行,正整数n(n < 100)

输出

输出一行,包含一个整数,即小于等于n的所有与7无关的正整数的平方和。

样例输入

样例输出

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int sum = 0;
		for(int i=1;i<=n;i++)
		{
			if(i%7!=0)
			{
				if((i%10!=7)&&(i/10%10!=7))
				{	sum = sum+i*i;}
			}
			
		}
		System.out.println(sum);
	}
}

 22:骑车与走路

描述

在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米.请判断走不同的距离去办事,是骑车快还是走路快.

输入

第一行为待处理的数据的数量n
其后每一行整数为一次办事要行走的距离,单位为米.

输出

对应每个整数,如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All".

样例输入

样例输出

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		double sum = 0;
		for (int i = 1; i <= n; i++) {
			double m = in.nextInt();
			double w = m / 1.2;
			double b = 50 + m / 3.0;
			if (b > w) 
			{System.out.println("Walk");}  
			else if(b < w)
				{System.out.println("Bike");}	
			else System.out.println("All");
		}
	}
}

 

举报

相关推荐

0 条评论