👨💻博客主页:@花无缺
欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 花无缺 原创收录于专栏 【洛谷算法题】
文章目录
- 【洛谷算法题】P2433-小学数学 N 合一【入门2分支结构】
- 🌏题目描述
- 🌙问题 1
- 🌙问题 2
- 🌙问题 3
- 🌙问题 4
- 🌙问题 5
- 🌙问题 6
- 🌙问题 7
- 🌙问题 8
- 🌙问题 9
- 🌙问题 10
- 🌙问题 11
- 🌙问题 12
- 🌙问题 13
- 🌙问题 14
- 🌏输入格式
- 🌏输出格式
- 🌏样例 #1
- 🌙样例输入 #1
- 🌙样例输出 #1
- 🌏提示
- 🌏题解
- 🌏总结
- 🌙problem 1
- 🌙problem 2
- 🌙problem 3
- 🌙problem 4
- 🌙problem 5
- 🌙problem 6
- 🌙problem 7
- 🌙problem 8
- 🌙problem 9
- 🌙problem 10
- 🌙problem 11
- 🌙problem 12
- 🌙problem 13
- 🌙problem 14
【洛谷算法题】P2433-小学数学 N 合一【入门2分支结构】
题目链接:【深基1-2】小学数学 N 合一 - 洛谷
🌏题目描述
🌙问题 1
请输出 I love Luogu!
🌙问题 2
这里有 10 10 10 个苹果,小 A 拿走了 2 2 2 个,Uim 拿走了 4 4 4 个,八尾勇拿走剩下的所有的苹果。我们想知道:
- 小A 和 Uim 两个人一共拿走多少苹果?
- 八尾勇能拿走多少苹果?
现在需要编写一个程序,输出两个数字作为答案,中间使用空格分开。
🌙问题 3
现在有 14 14 14 个苹果。要均分给 4 4 4 名同学,分不掉的苹果放回冰箱。请问:
-
每位同学能分得几个苹果?
-
一共分出去多少苹果?
-
把几个苹果放回冰箱?
现在需要编写一个程序,输出三个数字作为答案,每个数字一行。
🌙问题 4
现在有 500 500 500 毫升的肥宅快乐水,要均分给 3 3 3 名同学,每位同学可以分到多少毫升?请输出一个数字作为输出。保留 6 6 6 位有效数字,且不使用科学计数法。
🌙问题 5
甲列火车长 260 260 260 米,每秒行 12 12 12 米;乙列火车长 220 220 220 米,每秒行 20 20 20 米,两车相向而行,从两车车头相遇时开始计时,多长时间后两车车尾相离?已知答案是整数。
🌙问题 6
一个长方形长宽分别是
6
cm
6 \text{ cm}
6 cm、
9
cm
9 \text{ cm}
9 cm,求它的对角线长度(
cm
\text{cm}
cm)。直接使用 cout
输出。
🌙问题 7
Uim 银行账户里面有 100 100 100 元。经过了下面的操作:
-
往里面存了 10 10 10 元;
-
购物花掉了 20 20 20 元;
-
把里面的钱全部取出。
请在每次操作后输出账户余额,并使用换行符隔开。
🌙问题 8
当半径为
r
=
5
r=5
r=5,请输出圆的周长、面积和球体积。取
π
=
3.141593
\pi=3.141593
π=3.141593。请直接使用 cout
输出答案,每行一个数字。
🌙问题 9
一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;第二天他也刚好吃了剩余桃子的一半,贪嘴多吃了一个;第三天他又刚好吃了剩下的桃子的一半,并贪嘴多吃了一个。第四天起来一看,发现桃子只剩下一个了。请问小猴买了几个桃子?
🌙问题 10
洛谷的评测任务是单位时间内均匀增加的。 8 8 8 台评测机 30 30 30 分钟可以刚好把评测队列中的程序评测完毕, 10 10 10 台评测机 6 6 6 分钟可以刚好把评测队列中的程序评测完毕,请问几台评测机可以在 10 10 10 分钟时刚好把评测队列中的程序评测完毕?
🌙问题 11
小 A 跑步速度
5
m/s
5 \text{ m/s}
5 m/s,八尾勇跑步速度
8
m/s
8 \text{ m/s}
8 m/s,八尾勇在小 A 后面
100
m
100 \text{ m}
100 m,他们同时起跑,请问需要多长时间八尾勇可以追上小 A?输出一个数字表示答案,使用 cout
直接输出。
🌙问题 12
大家都知道有 26 26 26 个英文字母,其中 A 是第一个字母。现在请编程求出:
- M 是字母表中的第几个字母?
- 第 18 18 18 个字母是什么?
输出一个数字和一个字母,使用换行隔开。
🌙问题 13
小 A 有两块球形橡皮泥,一个半径是 4 4 4,一个半径是 10 10 10。他想把这两块橡皮泥揉在一起,然后塑造成一个正方体,请问这个正方体的棱长是多少?如果结果不是整数,则舍去小数点之后的数字。取 π = 3.141593 \pi = 3.141593 π=3.141593。
🌙问题 14
根据咕咕网校的预测,当课程定价为 110 110 110 元时,会有 10 10 10 人报名。如果课程价格每降低 1 1 1 元,就会多 1 1 1 名报名者(反之亦然)。如果希望总共能收到 3500 3500 3500 元学费的话,那么应该定价多少呢?已知本题有两个答案符合要求,则取较小的那一个。如果这个答案不是整数,则需四舍五入精确到整数。
🌏输入格式
输入一个正整数,表示第几个问题。
🌏输出格式
根据所输入的问题编号,输出对应问题的答案。
🌏样例 #1
🌙样例输入 #1
2
🌙样例输出 #1
6 4
🌏提示
请解决以下小学数学题。你可以提交答案,也可以写一个程序。
对于本题来说,如果你不知道怎么输入,也可以这么抄:
#include<iostream>
// 填上你觉得需要的其他头文件
using namespace std;
int main() {
int T;
cin >> T;
if (T == 1) {
// 粘贴问题 1 的主函数代码,除了 return 0
cout << "I love Luogu!";
} else if (T == 2) {
// 粘贴问题 2 的主函数代码,除了 return 0
cout << 2 + 4 << " " << 10 - 2 - 4;
} else if (T == 3) {
// 请自行完成问题 3 的代码
} else if (T == 4) {
// 请自行完成问题 4 的代码
} else if (T == 5) {
// 请自行完成问题 5 的代码
} else if (T == 6) {
// 请自行完成问题 6 的代码
} else if (T == 7) {
// 请自行完成问题 7 的代码
} else if (T == 8) {
// 请自行完成问题 8 的代码
} else if (T == 9) {
// 请自行完成问题 9 的代码
} else if (T == 10) {
// 请自行完成问题 10 的代码
} else if (T == 11) {
// 请自行完成问题 11 的代码
} else if (T == 12) {
// 请自行完成问题 12 的代码
} else if (T == 13) {
// 请自行完成问题 13 的代码
} else if (T == 14) {
// 请自行完成问题 14 的代码
}
return 0;
}
🌏题解
import java.util.Scanner;
import java.math.BigDecimal;
import java.math.MathContext;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int judge = in.nextInt();
double PI = 3.141593;
switch (judge) {
case 1 : System.out.println("I love Luogu!");
break;
case 2 : System.out.println(6 + " " + 4);
break;
case 3 : System.out.println(14 / 4);
System.out.println(4 * (14 / 4));
System.out.println(14 % 4);
break;
case 4 :
System.out.printf("%.3f",500 / 3.0);
break;
case 5 : System.out.println(480 / 32);
break;
case 6 :
double number = Math.sqrt(6*6 + 9*9);
BigDecimal b = new BigDecimal(String.valueOf(number));
BigDecimal divisor = BigDecimal.ONE;
MathContext mc = new MathContext(6);
System.out.println(b.divide(divisor, mc));
break;
case 7 : System.out.println(110);
System.out.println(90);
System.out.println(0);
break;
case 8 :
System.out.printf("%.4f\n",2 * PI * 5);
System.out.printf("%.4f\n",PI * 25);
System.out.printf("%.3f",4.0 / 3 * PI * 5 * 5 * 5);
break;
case 9 :
System.out.println(fun(3));
break;
case 10 :
System.out.println(9);
break;
case 11 :
System.out.printf("%.4f",100 / 3.0);
break;
case 12 :
System.out.println((int)'M' - 64);
System.out.println((char)('A' + 17));
break;
case 13 :
double A = 4.0 / 3 * PI * 4 * 4 * 4;
double B = 4.0 / 3 * PI * 10 * 10 * 10;
System.out.printf("%.0f",Math.pow((A + B), 1.0 / 3.0));
break;
case 14 :
System.out.println(50);
break;
}
in.close();
}
public static int fun(int n) {
int sum = 1;
for (int i = 1; i <= n; i++) {
sum = (sum + 1) * 2;
}
return sum;
}
}
🌏总结
从本篇文章开始,我们将进入洛谷官方题单【入门2】分支结构的练习,主要针对我们对于编程语言中分支结构的熟悉和使用。
今天这个题总共有 14 个小问题,我们要根据输入的题号输出对应的结果,显然,这需要采用一个多分支结构来完成。这里,我们使用了 switch 语句来完成多分支语句。接下来我将给大家一一讲解每个题怎么做。
🌙problem 1
一个简单的输出语句。
System.out.println("I love Luogu!");
🌙problem 2
一个简单的数学问题。如果这样的数学题你不会做的话,那么我表示:你很棒,可以重新回小学看望一下你的小学数学老师,你看他打不打你就完了。
System.out.println(6 + " " + 4);
🌙problem 3
一个简单的数学问题。
System.out.println(14 / 4);
System.out.println(4 * (14 / 4));
System.out.println(14 % 4);
🌙problem 4
System.out.printf("%.3f",500 / 3.0);
这个题有一个易错点,保留6位有效数字
,不要误认为保留六位有效数字就是保留六位小数。有效数字是指从第一个不为0的数字开始后的数字,而且不算上末尾的 0。
例如:
1.345
4位有效数字
0.04
1位有效数字
0.00453
3位有效数字
0.783000
3位有效数字
Java 保留有效数字的方法:
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double number = 0.06789;
BigDecimal b = new BigDecimal(String.valueOf(number));
BigDecimal divisor = BigDecimal.ONE;
// 保留几位有效数字就把 2 改成几
MathContext mc = new MathContext(2);
System.out.println(b.divide(divisor, mc));
in.close();
}
}
🌙problem 5
一个数学行程的问题。此题是一个相遇问题,解题关键点:时间相同,且相遇时和离开时的总距离都是相同的。
直接上公式:
相遇问题:路程和 = 时间 * 速度和
System.out.println(480 / 32);
🌙problem 6
这个就是利用三角形勾股定理来做。利用 Java 的平方根函数sqrt()
。但是这个题需要注意一个细节,就是题目中要求使用C++做的话,直接使用cout
输出结果,而在C++中cout
默认输出浮点数保留 6 位有效数字,所以当我们转换为 Java 语言来做这个题目的时候,我们也要将结果保留 6 位有效数字。
double number = Math.sqrt(6*6 + 9*9);
BigDecimal b = new BigDecimal(String.valueOf(number));
BigDecimal divisor = BigDecimal.ONE;
MathContext mc = new MathContext(6);
System.out.println(b.divide(divisor, mc));
🌙problem 7
简单的数学题。
System.out.println(110);
System.out.println(90);
System.out.println(0);
🌙problem 8
直接用公式:
圆的周长:C=2πr
圆的面积:S=πr2
球的体积:V=(4/3)πr3
这个题也同样要求使用cout
输出结果,也即要保留 6 位有效数字,我们使用Java做时,也不一定都要按保留有效数字的那个方法来做,有时候太麻烦了,我们可以先看结果有多少位小数,再使用格式控制符保留到 6 位小数就达到了保留 6 位有效数字的目的,如下:
System.out.printf("%.4f\n",2 * PI * 5);
System.out.printf("%.4f\n",PI * 25);
System.out.printf("%.3f",4.0 / 3 * PI * 5 * 5 * 5);
🌙problem 9
从最后一天起往前递推就可以得到第一天的桃子总数,前一天的桃子数等于今天的桃子数加 1 的两倍,就这样循环 n 次,就可以推出第一天的桃子数量。
public static int fun(int n) {
int sum = 1;
for (int i = 1; i <= n; i++) {
sum = (sum + 1) * 2;
}
return sum;
}
System.out.println(fun(3));
🌙problem 10
这个题有个简单的做法,就是所求的数量是在 8 到 10 之间的,而又只能是整数,所以只能是 9;这样就做出来了。
但是还是要看看正确的做法。这是一个牛吃草问题,那么什么是牛吃草问题呢。
例如这样的问题: 牧场上有一片青草,每天都生长得一样快。这片青草供给 10 头牛吃,可以吃 22 天,或者供给 16 头牛吃,可以吃 10 天,期间一直有草生长。如果供给 25 头牛吃,可以吃多少天?
这个题就和本题非常的相似,草每天都在增长,此题中评测速率也在增快
可以列出一个方程组:
x+30y=8×30;
x+6y=10×6;
其中,x是初始的评测时间,y是每分钟的增长量
解得: x = 5;y = 7.5;
则答案等于:(15+7.5×10)÷10= 9 台评测机器。
🌙problem 11
一个简单的追及问题。八尾勇追上小A的总路程 = 小A的路程加上100米
得方程:5t + 100 = 8t => t = 100 / 3
System.out.printf("%.4f",100 / 3.0);
🌙problem 12
利用 ASCII 码来解答,A 的 ASCII 码为 65,根据这个往后推就可以得出结果。
System.out.println((int)'M' - 64);
System.out.println((char)('A' + 17));
🌙problem 13
先算出两个橡皮泥的总体积,再开立方根求出正方体的棱长。
double A = 4.0 / 3 * PI * 4 * 4 * 4;
double B = 4.0 / 3 * PI * 10 * 10 * 10;
System.out.printf("%.0f",Math.pow((A + B), 1.0 / 3.0));
🌙problem 14
用一个一元二次方程组就搞定了
设降价 x 元,售价就为110 + x 元
得方程:
(110 + x1)(10 − x2) = 3500;
解出来得:x1 = 70;x2 = 50;
或者 x1 = 50,x2 = 70;
题目要求要小的那个。
所以输出 50 就OK了。
System.out.println(50);
作者:花无缺(huawuque404.com)
🌸欢迎
关注
我的博客:花无缺-每一个不曾起舞的日子都是对生命的辜负~
🍻一起进步-刷题专栏:【洛谷算法题】
💻Java题解同步仓库:https://github.com/huawuque404/Java-solution
🥇往期精彩好文:
📢【CSS选择器全解指南】
📢【HTML万字详解】
你们的点赞👍 收藏⭐ 留言📝 关注✅
是我持续创作,输出优质内容
的最大动力!
谢谢!