洛谷 【入门1】顺序结构 P2433 【深基1-2】小学数学 N 合一

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

题目描述
问题 1
请输出 I love Luogu!

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

小A 和 Uim 两个人一共拿走多少苹果?
八尾勇能拿走多少苹果?
现在需要编写一个程序,输出两个数字作为答案,中间使用空格分开。

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

每位同学能分得几个苹果?

一共分出去多少苹果?

把几个苹果放回冰箱?

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

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

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

问题 6
一个长方形长宽分别是 6cm、9cm,求它的对角线长度(cm)。直接使用 cout 输出。

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

往里面存了 10 元;

购物花掉了 20 元;

把里面的钱全部取出。

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

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

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

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

问题 11
小A跑步速度 5m/s,八尾勇跑步速度 8m/s,八尾勇在小A后面 100m,他们同时起跑,请问需要多长时间八尾勇可以追上小A?输出一个数字表示答案,使用 cout 直接输出。

问题 12
大家都知道有 26 个英文字母,其中A是第一个字母。现在请编程求出:

M 是字母表中的第几个字母?
第 18 个字母是什么?
输出一个数字和一个字母,使用换行隔开。

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

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

输入格式

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

输出格式

根据每个问题,输出一个答案。

输入输出样例
输入 #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;
}

这个题从某方面来讲还是挺恶心的,虽然题较简单但是题量多呀
解析
Problem 1
这个没啥好说的,直接:

cout << "I love Luogu!";

Problem 2
这个嘛,其实答案都给了,小学基础算数题,看着写就好了。

cout << 2 + 4 << " " << 10 - 2 - 4;

Problem 3
这个也是小学数学:

14 ÷ 3 = 4 ⋯ 2 14\div 3=4\cdots 2 14÷3=42

(不知道还是否记得这个写法哈哈)

答案出来了,分别是3,12,2

cout << 14 / 4 << endl;
cout << 14 / 4 * 4 << endl;
cout << 14 - 14 / 4 * 4 << endl;

Problem 4
这个题也不难,但是需要注意控制有效数字位数
保留6位有效数字
有效数字包括整数部分和小数部分

500 ÷ 3 = 166.6666666 ⋯ 500\div 3=166.6666666\cdots 500÷3=166.6666666

前面的166也属于有效数字的一部分!

所 以 这 个 题 不是保留6位小数 不 是 保 留 6 位 小 数 , 而是3位小数 而 是 3 位 小 数 ! ! ! 所以这个题\color{red}\text{不是保留6位小数}不是保留6位小数,\color{green}\text{而是3位小数}而是3位小数!!! 不是保留6位小数6而是3位小数3

 cout << setprecision(6) <<500.0 / 3<< endl;
 //六位有效字符算上整数部分

Problem 5
一个典型的小学奥数的题——行程问题!
解决这种问题我们可以假设两个火车AB的一个处于相对静止,运动可以说是相对的,如果这两个火车火车A处于相对另一个火车B静止,两个火车同时行驶的问题会变成一个火车行驶的简单问题。相对运动的相关讨论我就不再这这里多说了。这个题中如果假设火车A运动火车B静止并且两个火车行驶反向是相反的所以在假设中火车A的速度 = 火车A的速度 + 火车B的速度火车A的车尾经过火车B的车尾的距离就是火车A的长度加上火车B的长度
所以直接计算即可。

cout << (220 + 260) / (20 + 12) << endl;

Problem 6

这道题就是勾股定理的基础运用。
勾股定理:在一个直角三角形中,两直角边的平方和等于斜边的平方
答案等于 6 2 + 9 2 \sqrt{6^2+9^2} 62+92

cout << sqrt(6 * 6 + 9 * 9) << endl;

Problem 7
小学减法题
答案是110,90,0

int all = 100;
cout << (all += 10) << endl;
cout << (all -= 20) << endl;
cout << (all -= all) << endl;

Problem 8
这个题就是考公式呢。
圆的周长: C = 2 π r \text{圆的周长:}C=2\pi r 圆的周长:C=2πr
圆的面积: S = π r 2 \text{圆的面积:}S=\pi r^2 圆的面积:S=πr2
球的体积: V = 4 3 π r 3 \text{球的体积:}V=\frac{4}{3}\pi r^3 球的体积:V=34πr3

注意的就是4/3一定要强转成double!
4/3换成4.0/3就是浮点数了

int r = 5;
double pi = 3.141593;//这个就是圆周率嘛不需要纠结
cout << 2 * r * pi << endl;
cout << r * r * pi << endl;
cout << r * r * r * pi * 4.0 / 3;//浮点数

Problem 9
倒推法就可以推出了。
我们可以从最后的一个桃子出发,由于是吃了一半,又吃了一个桃子,所以我们倒推的话就是先把那一个桃子加回去,再把桃子变成2倍,也就是加1,乘2最后可以得到答案22
详细可以参考本人这个博客猴子吃桃问题

  int peach = 1;
        int day = 3;
        while (day--)
        {
        	//加一乘二
            peach++;
            peach *= 2;
        }
        cout << peach << endl;
    }

Problem 10

牛吃草问题。

设初始评测队列数为xx,每分钟增长量为yy。

由题意得:

{ x + 30 y = 8 × 30 x + 6 y = 10 × 6 \begin{cases}x+30y=8\times30 \\x+6y=10\times 6\end{cases} {x+30y=8×30x+6y=10×6

解得
{ x = 15 y = 7.5 \begin{cases}x=15\\y=7.5\end{cases} {x=15y=7.5

需要 ( 15 + 7.5 × 10 ) ÷ 10 = 9 ( 15 + 7.5 × 10 ) ÷ 10 = 9 (15+7.5\times10)\div 10=9(15+7.5×10)÷10=9 (15+7.5×10)÷10=9(15+7.5×10)÷10=9台评测姬。
还有一种解法但只适用于特殊情况那就是,评测机越多,用时越短,既然评测时间6<10<30,所以评测机数量10>x>8,评测机不可能开半台,所以答案是9

cout << 9 <<endl;

Problem 11
追及问题也是行程问题,公式是:

路程差 ÷ 速度差 = 追及时间 \text{路程差}\div\text{速度差}=\text{追及时间} 路程差÷速度差=追及时间
可以结合刚才的相对运动相对静止思想解题。
两个人距离就是差距,相同方向运动所以速度相减。

cout << 100.0 / (8 - 5) << endl;

Problem 12
这题就单单纯数就行。
有点英语知识的都知道:答案分别是13和R
我用的是C++的find函数和下标特性做的题

//下标为1的是A
string s = "$ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout <<s.find('M') << endl;
cout << s[18];

Problem 13
利用体积相同转化问题,
公式:
球的体积: V = 4 3 π r 3 \text{球的体积:}V=\frac{4}{3}\pi r^3 球的体积:V=34πr3

正方体的体积: V = a 3 \text{正方体的体积:}V=a^3 正方体的体积:V=a3

a m n = n a m a^{\frac{m}n}=^n\sqrt{a^m} anm=nam

所以, 3 V = V 1 3 ^3\sqrt{V}=V^\frac{1}{3} 3V =V31

用pow函数或者用C++的三次根函数cbrt。

int result;
double pi = 3.141593;
//这里的4.0别忘了
double volume = 4.0 / 3 * pi * 4 * 4 * 4 + 4.0 / 3 * pi * 10 * 10 * 10;
result = cbrt(volume);
cout << result;

Problem 14
这题是一道经典的一元二次方程的应用题——薄利多销问题,利润减小,销量随之增大,是典型的二次方程!

设价钱为x元时有3500元。

由单价\times×数量==总价得: x × [ 10 + ( 110 − x ) ] = 3500 x × [ 10 + ( 110 − x ) ] = 3500 x\times[10+(110-x)]=3500x×[10+(110−x)]=3500 x×[10+(110x)]=3500x×[10+(110x)]=3500

化简得 − x 2 + 120 x − 3500 = 0 − x 2 + 120 x − 3500 = 0 -x^2+120x-3500=0−x 2 +120x−3500=0 x2+120x3500=0x2+120x3500=0

x 2 − 120 x + 3500 = 0 x 2 − 120 x + 3500 = 0 x^2-120x+3500=0x 2 −120x+3500=0 x2120x+3500=0x2120x+3500=0

因式分解,得 ( x − 50 ) ( x − 70 ) = 0 (x-50)(x-70)=0 (x50)(x70)=0

解得 x = 50 或 70 x=50\text{或}70 x=5070

由于取较小的数,即 x = 50 x=50 x=50

cout << 50 << endl;

The end~

AC代码(C++)

#include<iostream>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <string>
// 填上你觉得需要的其他头文件
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) {
        cout << 14 / 4 << endl;
        cout << 14 / 4 * 4 << endl;
        cout << 14 - 14 / 4 * 4 << endl;
    }
    else if (T == 4) {
        cout << setprecision(6) <<500.0 / 3<< endl;
    }
    else if (T == 5) {
        cout << (220 + 260) / (20 + 12) << endl;
    }
    else if (T == 6) {
        cout << sqrt(6 * 6 + 9 * 9) << endl;
    }
    else if (T == 7) {
        int all = 100;
        cout << (all += 10) << endl;
        cout << (all -= 20) << endl;
        cout << (all -= all) << endl;
    }
    else if (T == 8) {
        int r = 5;
        double pi = 3.141593;
        cout << 2 * r * pi << endl;
        cout << r * r * pi << endl;
        cout << r * r * r * pi * 4.0 / 3;
    }
    else if (T == 9) {
        int peach = 1;
        int day = 3;
        while (day--)
        {
            peach++;
            peach *= 2;
        }
        cout << peach << endl;
    }
    else if (T == 10) {
        cout << 9 <<endl;
    }
    else if (T == 11) {
        cout << 100.0 / (8 - 5) << endl;
    }
    else if (T == 12) {
        string s = "$ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        cout <<s.find('M') << endl;
        cout << s[18];
    }
    else if (T == 13) {
        int result;
        double pi = 3.141593;
        double volume = 4.0 / 3 * pi * 4 * 4 * 4 + 4.0 / 3 * pi * 10 * 10 * 10;
        result = cbrt(volume);
        cout << result;
    }
    else if (T == 14) {
        cout << 50 << endl;
    }
    return 0;
}

PS:部分测试数据
输入

4

输出

166.667
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值