【洛谷算法题】P2433-小学数学 N 合一【入门2分支结构】

简介: 【洛谷算法题】P2433-小学数学 N 合一【入门2分支结构】

【洛谷算法题】P2433-小学数学 N 合一【入门2分支结构】

题目链接:【深基1-2】小学数学 N 合一 - 洛谷

🌏题目描述

🌙问题 1

请输出 I love Luogu!

🌙问题 2

这里有 10 1010 个苹果,小 A 拿走了 2 22 个,Uim 拿走了 4 44 个,八尾勇拿走剩下的所有的苹果。我们想知道:

  1. 小A 和 Uim 两个人一共拿走多少苹果?
  2. 八尾勇能拿走多少苹果?

现在需要编写一个程序,输出两个数字作为答案,中间使用空格分开。

🌙问题 3

现在有 14 1414 个苹果。要均分给 4 44 名同学,分不掉的苹果放回冰箱。请问:

  1. 每位同学能分得几个苹果?
  2. 一共分出去多少苹果?
  3. 把几个苹果放回冰箱?

现在需要编写一个程序,输出三个数字作为答案,每个数字一行。

🌙问题 4

现在有 500 500500 毫升的肥宅快乐水,要均分给 3 33 名同学,每位同学可以分到多少毫升?请输出一个数字作为输出。保留 6 66 位有效数字,且不使用科学计数法。

🌙问题 5

甲列火车长 260 260260 米,每秒行 12 1212 米;乙列火车长 220 220220 米,每秒行 20 2020 米,两车相向而行,从两车车头相遇时开始计时,多长时间后两车车尾相离?已知答案是整数。

🌙问题 6

一个长方形长宽分别是 6  cm 6 \text{ cm}6 cm9  cm 9 \text{ cm}9 cm,求它的对角线长度(cm \text{cm}cm)。直接使用 cout 输出。

🌙问题 7

Uim 银行账户里面有 100 100100 元。经过了下面的操作:

  1. 往里面存了 10 1010 元;
  2. 购物花掉了 20 2020 元;
  3. 把里面的钱全部取出。

请在每次操作后输出账户余额,并使用换行符隔开。

🌙问题 8

当半径为 r = 5 r=5r=5,请输出圆的周长、面积和球体积。取 π = 3.141593 \pi=3.141593π=3.141593。请直接使用 cout 输出答案,每行一个数字。

🌙问题 9

一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;第二天他也刚好吃了剩余桃子的一半,贪嘴多吃了一个;第三天他又刚好吃了剩下的桃子的一半,并贪嘴多吃了一个。第四天起来一看,发现桃子只剩下一个了。请问小猴买了几个桃子?

🌙问题 10

洛谷的评测任务是单位时间内均匀增加的。8 88 台评测机 30 3030 分钟可以刚好把评测队列中的程序评测完毕,10 1010 台评测机 6 66 分钟可以刚好把评测队列中的程序评测完毕,请问几台评测机可以在 10 1010 分钟时刚好把评测队列中的程序评测完毕?

🌙问题 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 2626 个英文字母,其中 A 是第一个字母。现在请编程求出:

  1. M 是字母表中的第几个字母?
  2. 18 1818 个字母是什么?

输出一个数字和一个字母,使用换行隔开。

🌙问题 13

小 A 有两块球形橡皮泥,一个半径是 4 44,一个半径是 10 1010。他想把这两块橡皮泥揉在一起,然后塑造成一个正方体,请问这个正方体的棱长是多少?如果结果不是整数,则舍去小数点之后的数字。取 π = 3.141593 \pi = 3.141593π=3.141593

🌙问题 14

根据咕咕网校的预测,当课程定价为 110 110110 元时,会有 10 1010 人报名。如果课程价格每降低 1 11 元,就会多 1 11 名报名者(反之亦然)。如果希望总共能收到 3500 35003500 元学费的话,那么应该定价多少呢?已知本题有两个答案符合要求,则取较小的那一个。如果这个答案不是整数,则需四舍五入精确到整数。

🌏输入格式

输入一个正整数,表示第几个问题。

🌏输出格式

根据所输入的问题编号,输出对应问题的答案。

🌏样例 #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.3454位有效数字

0.041位有效数字

0.004533位有效数字

0.7830003位有效数字

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)


相关文章
|
3天前
|
存储 安全 算法
|
3天前
|
存储 算法 Serverless
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
47 0
|
3天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
49 0
|
3天前
|
存储 监控 NoSQL
Redis处理大量数据主要依赖于其内存存储结构、高效的数据结构和算法,以及一系列的优化策略
【5月更文挑战第15天】Redis处理大量数据依赖内存存储、高效数据结构和优化策略。选择合适的数据结构、利用批量操作减少网络开销、控制批量大小、使用Redis Cluster进行分布式存储、优化内存使用及监控调优是关键。通过这些方法,Redis能有效处理大量数据并保持高性能。
22 0
|
3天前
|
存储 机器学习/深度学习 算法
|
3天前
|
网络协议 算法 数据库
【专栏】OSPF是广泛应用的链路状态路由协议,通过分层网络结构和SPF算法实现高效路由。强烈建议收藏!
【4月更文挑战第28天】OSPF是广泛应用的链路状态路由协议,通过分层网络结构和SPF算法实现高效路由。其关键特性包括区域划分、链路状态数据库、邻居关系和路由更新。工作过程涉及邻居发现、信息交换、数据库构建、路由计算及收敛。理解OSPF对于网络管理和规划具有重要意义。
|
3天前
|
机器学习/深度学习 人工智能 算法
分类算法入门:以鸢尾花数据集为例(上)
分类算法入门:以鸢尾花数据集为例(上)
37 2
|
3天前
|
机器学习/深度学习 算法 数据可视化
分类算法入门:以鸢尾花数据集为例(下)
分类算法入门:以鸢尾花数据集为例(下)
55 2
|
3天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
3天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
35 0