HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)

今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的

题号 题名 题号 题名
2000 ASCII码排序 2001 计算两点间的距离
2002 计算球体积 2003 求绝对值
2004 成绩转换 2005 第几天?
2006 求奇数的乘积 2007 平方和与立方和
2008 数值统计 2009 求数列的和
2010 水仙花数 2011 多项式求和
2012 素数判定 2013 蟠桃记
2014 青年歌手大奖赛_评委会打分 2015 偶数求和
2016 数据的交换输出 2017 字符串统计
2018 母牛的故事 2019 数列有序!
2020 绝对值排序 2021 发工资咯:)
2022 海选女主角 2023 求平均成绩
2024 C语言合法标识符 2025 查找最大元素
2026 首字母变大写 2027 统计元音
2028 Lowest Common Multiple Plus 2029 Palindromes _easy version
2030 汉字统计 2031 进制转换
2032 杨辉三角 2033 人见人爱A+B
2034 人见人爱A-B 2035 人见人爱A^B
2036 改革春风吹满地 2037 今年暑假不AC
2038 test 2039 三角形
2040 亲和数 2041 超级楼梯
2042 不容易系列之二 2043 密码
2044 一只小蜜蜂... 2045 不容易系列之(3)—— LELE的RPG难题
2046 骨牌铺方格 2047 阿牛的EOF牛肉串
2048 神、上帝以及老天爷 2049 不容易系列之(4)——考新郎
2050 折线分割平面 2051 Bitset
2052 Picture 2053 Switch Game
2054 A == B n 2055 An easy problem
2056 Rectangles 2057 A + B Again
2058 The sum problem 2059 龟兔赛跑
2060 Snooker 2061 Treasure the new start, freshmen!
2062 Subset sequence 2063 过山车
2064 汉诺塔III 2065 "红色病毒"问题
2066 一个人的旅行 2067 小兔的棋盘
2068 RPG的错排 2069 Coin Change
2070 Fibbonacci Number 2071 Max Num
2072 单词数 2073 无限的路
2074 叠筐 2075 A|B?
2076 夹角有多大(题目已修改,注意读题) 2077 汉诺塔IV
2078 复习时间 2079 选课时间(题目已修改,注意读题)
2080 夹角有多大II 2081 手机短号
2082 找单词 2083 简易版之最短距离
2084 数塔 2085 核反应堆
2086 A1 = n 2087 剪花布条
2088 Box of Bricks 2089 不要62
2090 算菜价 2091 空心三角形
2092 整数解 2093 考试排名
2094 产生冠军 2095 find your present (2)
2096 小明A+B 2097 Sky数
2098 分拆素数和 2099 整除的尾数

P2000.ASCII码排序

package hdu经典100题;

import java.util.Scanner;

public class P2000 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			String str = in.next();
			int a = str.charAt(0);
			int b = str.charAt(1);
			int c = str.charAt(2);
			int temp;
			if(b>a) {
				temp = a;
				a = b;
				b = temp;
				
			}
			if(c>a) {
				temp = a;
				a = c;
				c = temp;
			}
			if(c>b) {
				temp = b;
				b = c;
				c = temp;
			}
			System.out.println((char)c+" "+(char)b+" "+(char)a);
		}
	}

}

P2001.计算两点间的距离

package hdu经典100题;

import java.text.DecimalFormat;
import java.util.Scanner;

public class P2001 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			double x1 = in.nextDouble();
			double y1 = in.nextDouble();
			double x2 = in.nextDouble();
			double y2 = in.nextDouble();
			DecimalFormat decimalFormat = new DecimalFormat(".00");
			System.out.println(decimalFormat.format(Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))));
		}
	}
}

P2002.计算球体积

package hdu经典100题;

import java.util.Scanner;

public class P2002 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			double r = in.nextDouble();
			System.out.printf("%.3f\n",4.0/3.0*r*r*r*3.1415927);
		}
	}
}

P2003.求绝对值

package hdu经典100题;

import java.text.DecimalFormat;
import java.util.Scanner;

public class P2003 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			double num = in.nextDouble();
			DecimalFormat decimalFormat = new DecimalFormat(".00");
			System.out.println(decimalFormat.format(Math.abs(num)));
			
		}
		
	}

}

P2004.成绩转换

package hdu经典100题;

import java.util.Scanner;

public class P2004 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while (in.hasNext()) {
			int grade = in.nextInt();
			if(grade<0 || grade>100) {
				System.out.println("Score is error!");
			}else {
				switch (grade / 10) {
				case 10:
					System.out.println("A");
					break;
				case 9:
					System.out.println("A");
					break;
				case 8:
					System.out.println("B");
					break;
				case 7:
					System.out.println("C");
					break;
				case 6:
					System.out.println("D");
					break;
				default:
					System.out.println("E");
					break;
				}
			}
		}
	}

}

P2005.第几天?

package hdu经典100题;


import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class P2005 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			String date = in.next();
			int year = Integer.valueOf(date.substring(0,4));
			int month = Integer.valueOf(date.substring(5, date.lastIndexOf('/')));
			int day = Integer.valueOf(date.substring(date.lastIndexOf('/')+1));
			Calendar calendar = new GregorianCalendar(year, month-1, day);
			System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
		}
	}

}

P2006.求奇数的乘积

package hdu经典100题;

import java.util.Scanner;

public class P2006 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int n = in.nextInt();
			int cj = 1;
			while(n!=0) {
				int num = in.nextInt();
				if(num%2!=0) {
					cj = cj * num;
				}
				n--;
			}
			System.out.println(cj);
			
		}
		
		
	}

}

P2007.平方和与立方和

package hdu经典100题;

import java.util.Scanner;

public class P2007 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int m = in.nextInt();
			int n = in.nextInt();
			int temp;
			if(m>n) {
				temp = m;
				m = n;
				n = temp;
			}
			int sumOu = 0;
			int sumJi = 0;
			for (int i = m; i <= n; i++) {
				if(i%2==0) {
					sumOu+=i*i;
				}else {
					sumJi+=i*i*i;
				}
			}
			System.out.println(sumOu+" "+sumJi);
		}
	}
}

P2008.数值统计

package hdu经典100题;

import java.util.Scanner;

public class P2008 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int n = in.nextInt();
			if(n==0) {
				break;
			}
			int amountFu = 0;
			int amountZreo = 0;
			int amountZheng = 0;
			while(n!=0) {
				double num = in.nextDouble();
				if(num==0) {
					amountZreo++;
				}else if (num<0) {
					amountFu++;
				}else {
					amountZheng++;
				}
				n--;
			}
			System.out.println(amountFu+" "+amountZreo+" "+amountZheng);
		}
		
	}
}

P2009求数列的和

package hdu经典100题;

import java.text.DecimalFormat;
import java.util.Scanner;

public class P2009 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			double n = in.nextInt();
			int m = in.nextInt()-1;
			double sum = n;
			while(m!=0) {
				sum+=Math.sqrt(n);
				n = Math.sqrt(n);
				m--;
			}
			DecimalFormat format = new DecimalFormat(".00");
			System.out.println(format.format(sum));
		}
	}

}

P2010.水仙花数

package hdu经典100题;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class P2010 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int m = in.nextInt();
			int n = in.nextInt();
			List<Integer> list = new ArrayList<>();
			for (int i = m; i <=n; i++) {
				String strNum = String.valueOf(i);
				if(i==Integer.valueOf(String.valueOf(strNum.charAt(0)))*Integer.valueOf(String.valueOf(strNum.charAt(0)))*Integer.valueOf(String.valueOf(strNum.charAt(0)))
						+Integer.valueOf(String.valueOf(strNum.charAt(1)))*Integer.valueOf(String.valueOf(strNum.charAt(1)))*Integer.valueOf(String.valueOf(strNum.charAt(1)))
						+Integer.valueOf(String.valueOf(strNum.charAt(2)))*Integer.valueOf(String.valueOf(strNum.charAt(2)))*Integer.valueOf(String.valueOf(strNum.charAt(2)))
						) {
					list.add(i);
				}
			}
			if(list.size()==0) {
				System.out.println("no");
			}else {
				Collections.sort(list);
				for (int i = 0; i < list.size()-1; i++) {
					System.out.print(list.get(i)+" ");
				}
				System.out.println(list.get(list.size()-1));
			}
		}
	}

}

P2011.多项式求和

package hdu经典100题;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class P2011 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int m = in.nextInt();
		int nums [] = new int [m];
		for (int i = 0; i < nums.length; i++) {
			nums[i] = in.nextInt();
		}
		List<Double> list = new ArrayList<>();
		for (int i = 0; i < nums.length; i++) {
			double sum =0;
			for (int j = 1; j <=nums[i]; j++) {
				if(j%2==0) {
					sum+=(-1*1.0/j);
				}else {
					sum+=1.0/j;
				}
			}
			list.add(sum);
		}
		DecimalFormat format = new DecimalFormat("0.00");
		for (int i = 0; i < list.size(); i++) {
			System.out.println(format.format(list.get(i)));
		}
		
	}

}

P2012.素数判定

package hdu经典100题;

import java.util.Arrays;
import java.util.Scanner;

public class P2012 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
            //模拟
		int [] nums = new int[3000];
		nums[2] = 0;
		nums[3] = 0;
		nums[5] = 0;
		for (int i = 2; i < nums.length; i++) {
			int j=2;
			if(nums[i]==0) {
				for (; j*i < nums.length; j++) {
					nums[j*i] = 1;
				}
			}
		}
		while(in.hasNext()) {
			int x = in.nextInt();
			int y = in.nextInt();
			if(x==0 && y==0) {
				break;
			}
			int i;
			for ( i = x; i <=y; i++) {
				if(nums[(i*i+i+41)]!=0) {
					break;
				}
			}
			if(i==y+1) {
				System.out.println("OK");
			}else {
				System.out.println("Sorry");
			}
		}
	}

}

P2013.蟠桃记

package hdu经典100题;

import java.util.Scanner;

public class P2013 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int n = in.nextInt()-1;
			int amount = 1;
			while(n!=0) {
				amount = 2*(amount+1);
				n--;
			}
			System.out.println(amount);
		}
	}

}

P2014.青年歌手大奖赛_评委会打分

package hdu经典100题;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class P2014 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int n = in.nextInt();
			List<Double> list = new ArrayList<>();
			for (int i = 0; i < n; i++) {
				list.add(in.nextDouble());
			}
			Collections.sort(list);
			list.remove(0);
			list.remove(list.size()-1);
			double sum = 0;
			for (int i = 0; i < list.size(); i++) {
				sum+=list.get(i);
			}
			DecimalFormat format = new DecimalFormat("0.00");
			System.out.println(format.format(sum/list.size()));
		}
	}

}

P2015.偶数求和

package hdu经典100题;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class P2015 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int[] nums = new int[100];
		nums[0] = 2;
		for (int i = 1; i < nums.length; i++) {
			nums[i] = nums[i-1]+2;
		}
		while(in.hasNext()) {
			int n = in.nextInt();
			int m = in.nextInt();
			List<Integer> list = new ArrayList<>();
			if(n%m==0) {
				for (int i = 0; i < n; i+=m) {
					int sum = 0;
					for (int j = i; j < i+m;j++) {
						sum+=nums[j];
					}
					list.add(sum/m);
				}
			}else {
				int i = 0;
				for (; i < n-(n%m); i+=m) {
					int sum = 0;
					for (int j = i; j < i+m;j++) {
						sum+=nums[j];
					}
					list.add(sum/m);
				}
				int sum = 0;
				m = n%m;
				for (int j = i; j < n; j++) {
					sum+=nums[j];
				}
				list.add(sum/m);
			}
			
			for (int i = 0; i < list.size()-1; i++) {
				System.out.print(list.get(i)+" ");
			}
			System.out.println(list.get(list.size()-1));
		}
	}

}

P2016.数据的交换输出

package hdu经典100题;

import java.util.Scanner;

public class P2016 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int n = in.nextInt();
			if(n==0) {
				break;
			}
			int[] nums = new int [n];
			nums[0] = in.nextInt();
			int minIndex = 0;
			int temp;
			for (int i = 1; i < nums.length; i++) {
				nums[i] = in.nextInt();
				if(nums[i]<nums[minIndex]) {
					minIndex = i;
				}
			}
			temp = nums[minIndex];
			nums[minIndex] = nums[0];
			nums[0] = temp;
			for (int i = 0; i < nums.length-1; i++) {
				System.out.print(nums[i]+" ");
			}
			System.out.println(nums[nums.length-1]);
		}
	}
}

P2017.字符串统计

package hdu经典100题;

import java.util.Scanner;

public class P2017 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		while(n!=0) {
			String str = in.next().toLowerCase();
			int amount =0;
			for (int i = 0; i < str.length(); i++) {
				if(str.charAt(i)>='0' && str.charAt(i)<='9') {
					amount++;
				}
			}
			System.out.println(amount);
			n--;
		}
	}

}

P2018.母牛的故事

package hdu经典100题;

import java.util.Scanner;

public class P2018 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		long[] amount = new long [54];
		amount[0] = 1;
		amount[1] = 2;
		amount[2] = 3;
		amount[3] = 4;
		for (int i = 4; i < amount.length; i++) {
			amount[i] = amount[i-1]+amount[i-3];
		}
		while(in.hasNext()) {
			int n = in.nextInt();
			if(n==0) {
				break;
			}
			System.out.println(amount[n-1]);
		}
	}

}

P2019.数列有序!

package hdu经典100题;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class P2019 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int n = in.nextInt();
			int m = in.nextInt();
			if(n==0 && m==0) {
				break;
			}
			List<Integer> list = new ArrayList<>();
			int insert = n;
			boolean isJ = false;
			for (int i = 0; i < n; i++) {
				list.add(in.nextInt());
				if(list.get(i)>=m && !isJ) {
					insert = i;
					isJ = true;
				}
			}
			list.add(insert, m);
			for (int i = 0; i < list.size()-1; i++) {
				System.out.print(list.get(i)+" ");
			}
			System.out.println(list.get(list.size()-1));
		}
	}

}

P2020.绝对值排序

package hdu经典100题;

import java.util.Scanner;

public class P2020 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		while(in.hasNext()) {
			int n = in.nextInt();
			if(n==0) {
				break;
			}
			int[] nums = new int [n];
			for (int i = 0; i < nums.length; i++) {
				nums[i] = in.nextInt();
			}
			int temp;
			for (int i = 0; i < nums.length; i++) {
				for (int j = 0; j < nums.length-1-i; j++) {
					if(Math.abs(nums[j+1])>Math.abs(nums[j])) {
						temp = nums[j+1];
						nums[j+1] = nums[j];
						nums[j] = temp;
					}
				}
			}
			for (int i = 0; i < nums.length-1; i++) {
				System.out.print(nums[i]+" ");
			}
			System.out.println(nums[nums.length-1]);
			
		}
	}

}

未完......(更新中)

版权声明

本人的所有原创文章皆保留版权,请尊重原创作品。
转载必须包含本声明,保持本文完整,并以超链接形式注明原始作者

联系方式

我的邮箱,欢迎来信([email protected]

我的CSDN博客(acDream_

猜你喜欢

转载自blog.csdn.net/acDream_/article/details/81430786