算法入门——洛谷第二章_分支结构(JAVA)

文章目录

        P2433 【深基1-2】小学数学 N 合一

        P5709 【深基2.习6】Apples Prologue / 苹果和虫子

        P5710 【深基3.例2】数的性质

        P5711 【深基3.例3】闰年判断

        P5712 【深基3.例4】Apples

        P5713 【深基3.例5】洛谷团队系统

        P5714 【深基3.例7】肥胖问题

        P5715 【深基3.例8】三位数排序

        P5716 【深基3.例9】月份天数

        P1085 [NOIP2004 普及组] 不高兴的津津

        P1909 [NOIP2016 普及组] 买铅笔

        P5717 【深基3.习8】三角形分类

        P1422 小玉家的电费

        P1424 小鱼的航程(改进版)

        P1888 三角函数

        P1046 [NOIP2005 普及组] 陶陶摘苹果

        P4414 [COCI2006-2007#2] ABC

        P1055 [NOIP2008 普及组] ISBN 号码


P2433 【深基1-2】小学数学 N 合一

import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a, b, c, d;
		double e, f;
		double pi = 3.141593;
		switch (n) {
		case 1:
			System.out.println("I love Luogu!");
			break;
		case 2:
			a = 2 + 4;
			b = 10 - a;
			System.out.printf("%d %d", a, b);
			break;
		case 3:
			a = 14 / 4;
			b = a * 4;
			c = 14 - b;
			System.out.println(a);
			System.out.println(b);
			System.out.println(c);
			break;
		case 4:
			e = 500;
			f = 3;
			BigDecimal g = new BigDecimal(String.valueOf(e / f));
			MathContext mc = new MathContext(6);// 有效数字位数位6
			System.out.println(g.divide(BigDecimal.ONE, mc));// 让e/f的结果除1,并且保留6位小数
			break;
		case 5:
			a = 260 + 220;
			b = 12 + 20;
			c = a / b;
			System.out.println(c);
			break;
		case 6:
			e = Math.sqrt(6 * 6 + 9 * 9);
			System.out.printf("%.4f", e);
			break;
		case 7:
			a = 100 + 10;
			b = a - 20;
			c = 0;
			System.out.printf("%d\n%d\n%d", a, b, c);
			break;
		case 8:
			int r = 5;
			e = 2 * r * pi;
			f = pi * r * r;
			double v = (4 / 3.0) * pi * r * r * r;
			System.out.printf("%.4f\n%.4f\n%.3f", e, f, v);
			break;
		case 9:
			a = (((2 * 2) + 1) * 2 + 1) * 2;
			System.out.println(a);
			break;
		case 10:
			System.out.println(9);
			break;
		case 11:
			e = 100 / 3.0;
			System.out.printf("%.4f", e);
			break;
		case 12:
			a = 'A';
			b = 'M' - 'A' + 1;
			char q = (char) (a + 18 - 1);
			System.out.println(b);
			System.out.println(q);
			break;
		case 13:
			e = (4 / 3.0 * 4 * 4 * 4 * pi) + (4 / 3.0 * 10 * 10 * 10 * pi);
			f = Math.cbrt(e);
			System.out.println((int) (Math.floor(f)));
			break;
		case 14:
			a = 110;
			b = 10;
			c = d = 0;
			a--;
			for (; a > 0; a--) {
				b++;
				if (a * b > 3500)
					c = a;
				if (a * b < 3500 && a < c) {
					d = a;
					if ((d - 1) * (b + 1) < 3500)
						break;
				}
			}
			int b1 = 120 - c;
			int b2 = 120 - d;
			int b3 = (b1 + b2) / 2;
			int w;
			if (b3 * (c + d) / 2 > 3500)
				w = d;
			else if (b3 * (c + d) / 2 < 3500)
				w = c;
			else
				w = (c + d) / 2;
			System.out.println(w);
			break;
		}
	}
}

Tips:题目中提到了cout,在c++中cout的默认输出是保留六位有效数字,大家可以注意一下。

还有就是这里面用到了高精度的东西,这个东西到了【算法1-1】详细说


P5709 【深基2.习6】Apples Prologue / 苹果和虫子

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		float b = sc.nextFloat();
		int c = sc.nextInt();
		if (b == 0) {
			b = a;
			a = 0;
			if(c == 0)
				a = (int)b;
		} else {
			a -= Math.ceil(c / b);
			if (a < 0)
				a = 0;
		}
			System.out.println(a);
	}
}

这题改了?我怎么记得我做的时候没有说是三个非负整数 (x_x)

注意点:如果吃一个苹果需要0min,但时间只过去0min,那么它一个苹果也没吃上(

但如果时间比0min稍微多一点,哪怕多一秒,他也能把苹果都吃完,毕竟一个苹果只需要吃0min


P5710 【深基3.例2】数的性质

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x[] = new int[4];//x数组分别表示四个人
		x[0] = x[1] = 0;
		x[2] = 1;
		x[3] = 2;
		int a = sc.nextInt();
		if ((a%2) == 0) {
			x[0] += 1;
			x[1] += 2;
			x[2] += 3;
			x[3]  = 0;
		}
		if(a>4 && a<=12) {
			x[0] += 1;
			x[1] += 2;
			x[2] += 3;
			x[3]  = 0;
		}
		for(int i = 0;i<x.length;i++) {
			if(x[i] == 2 || x[i] == 4)
				x[i] = 1;
			else
				x[i] = 0;
			System.out.printf("%d ",x[i]);
		}
		
	}
}

        我承认我这题当初做的是凑出来的,所以我的代码大家应该看不太懂,我稍微解释一下,看看大家能不能对上我的电波喵(

        先不看初始值,我们先分析题干,第一个人喜欢两个条件同时成立,不妨假设满足一个条件,这个人对应的数组值就+1,那么当且仅当x[0] == 2的时候才满足需求;

        这里可以看出来,按照这样来看,当个人的值为奇数1时,他就只满足一个条件,有了这个思路我们再去看第二个人,他喜欢至少符合一种,也就是只满足一个,或者两个都满足,在这种情况下,如果每个题目还是只+1的话,那么还是1,2都有可能出现,显然,出现奇数1并不方便我们之后的判断,最好是符合要求的都是偶数,故每项+2,保证出现偶数,就是满足条件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值