洛谷 P2433 小学数学 N 合一 题解

这道N合一记得注意格式

这道题叫作小学数学N合一,但其中出现了许多小学奥数、初中数学、高中数学,甚至是英语<@_@>,所以只能叫N合一了。一起来看看怎么做吧^__^

问题一

        我觉得你会,没什么说的,直接就是一个输出

cout<<"I love Luogu!";

问题二 

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

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

首先,2+4=6;

其次,10-2-4=4;

解决了^_^

问题三

        

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

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

  2. 一共分出去多少苹果?

  3. 把几个苹果放回冰箱?

14÷4=3 ⋯⋯2

1.分3个苹果

2.分出去12个

3.剩下2个

问题四

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

解:这道题还是比较简单的(除了有点坑以外),首先我们肯定能发现,这道题的答案不是整数,那我们就用1.0*500/3最后再用<<fixed<<setprecision(6)保留6位小数就可以了。你是不是也是这样想的?

是这样想的你就想错了,请重新读一下这句话:保留 6 位有效数字。这可不是保留6位小数这么简单的,举个例子:123.45612要变成123.456、12345612要变成12345600。

所以答案要变成

cout<<fixed<<setprecision(3)<<1.0*500/3;

问题五

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

小学奥数之

              ——行程问题

两辆车的总长度为480米,速度和为32米每秒,480/32=15秒,所以输出15;

问题六

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

讲个笑话:小学数学……

这道题要用勾股定理,不知道的可以现学一下(点一下就可以了)。

那么答案就是sqrt(6*6+9*9)也就是10.8167;

问题七

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

  1. 往里面存了 10 元;

  2. 购物花掉了 20 元;

  3. 把里面的钱全部取出。

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

一点简单的小题题,答案是110900.

问题八

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

你要是说小学学过周长和面积的公式我没意见,

                周长:π2r    面积:π r²

但你要是说小学范围里有球的体积公式,我就有些不认用了,看来出题人已经忘记了小学两个字。

                球的体积公式 :¾π r³

答案:31.4159   78.5398    523.599

问题九

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

小学奥数之

            ——倒推法还原问题

还原问题是指题目给出的是一个数经过某些变化后的结果,要求原来的数的问题。 解答这一类的问题时,要根据题意,从所给的结果出发,抓住逆运算关系,由后向前一步步逆推(倒推法、还原法),做相反的运算,逐步靠拢已知条件,直到问题得到解决。

倒推法指的是以期望的目标为基准,从后往前来推测的一种方法。 

知道了这些前置知识了以后,我们就可以做这道题了。

小猴最后是吃了一半,又吃了一个桃子,所以我们要先把那一个桃子加回去,再把桃子变成2倍。

接下来,我们的答案是:((((1+1)*2)+1)*2)+1)*2=22(个)

问题十

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

小学奥数之

            ——牛吃草问题

好好好,小学奥数最难题之一的牛吃草问题还是出现了。

典型牛吃草问题的条件是假设草的生长速度固定不变,不同头数的牛吃光同一片草地所需的天数各不相同,求若干头牛吃这片草地可以吃多少天

牛吃草的速度快过草长的速度,两者相差即草的净消耗效率。

牛吃草的基本公式——

x=(V牛-V草)*天数

V草 为草的自然增长速度

x 为草的数量

V牛 为牛吃草的速度

天数为草完全消失所耗用的时间

这道题我有两个解法,一个尝龟解法,一个鬼畜解法,你想听那种?

 算啦,先来一个一通百通的尝龟方法;

        1. 8台测评机工作了30分钟,也就是说总共工作了240分钟

        2. 10台测评机工作了6分钟,也就是说总共工作了60分钟

        3. 我们可以知道,在24分钟内增加了180分钟的工作量,所以一分钟会增加7.5分钟的工作量

        4. 我们便可以求出原有15分钟的工作量

        5. 答案就是7.5+(1.5/10)=9

鬼畜方法来喽

        设目标测评机数为x,我们可以知道,8<x<10,x为整数,所以x等于9.

        好简单啊~~

问题十一

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

小学奥数之

            ——追及问题

公式是

路程差÷速度差=追及时间

 答案是  100/(8-5)=33.3333

程序这么写就好了

cout<<1.0*100/3;

Problem  12

 都出英语题了,我用英语写标题怎么了?

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

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

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

 出题人是不是不知道什么是数学?

cout<<"13"<<endl<<"R";

问题十三

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

又是球,我就不细讲了,先求体积。

但是已知体积求棱长要用三次根式,怎么办呢?我们用分数指数幂加pow函数就可以解决了。不过这应该是高中内容吧……

分数 指数幂 是一个数的指数为分数 如2的1/2次幂就是 根号2 分数指数幂是 根式的另一种表示形式, 即n次根号 (a的m次幂)可以写成a的m/n次幂, (其中n是大于1的 正整数,m是整数)

cout<<int(pow(4/3*pi*(4*4*4+10*10*10),1.0*1/3));

也就相当于

cout<<"16";

问题十四

初中数学之

            ——一元二次方程

一元二次方程:如果一个二次方程只含有一个未知数 x,那么就称其为 一元二次方程 。它的基本表达式为: ,其中a为方程的 二次项系数 ,b为 一次项系数 ,c为常数。

而这道题是薄利多销问题,是低价低利扩大销售的策略

这题我们设降价为x元,这样的话售价(110+x)元,报名(10−x)人,总价=单价×数量,列出方程

列:(110+x)(10−x)=3500

解方程我们就用因式分解法

因式分解法把一个多项式化为几个最简整式的乘积的形式,这种变形叫做把这个因式分解(也叫作分解因式)一、因式分解基本步骤:1、各项如果有公因式应先提公因式,再进一步分解(如果多项式的首项为负,应先提取负号);2、运用公式法进行分解(平方差公式、完全平方公式和十字相乘法来分解);3、如果不能用公式法进行分解,考虑对多项式进行分组,将可以因式分解的项放到一组,比如一个4项的多项式,可以两两分组。

最后,我们解得 x=50或70

                            取x=50

如果你不会解一元二次方程呢?

你可以枚举啊

结语

终于,我们可以AC这道小学初中高中数学奥数英语编程N合一了。

正解std

老规矩,上代码,走你q(≧▽≦q)

#include <bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin>>t;
	if(t==1){
		cout<<"I love Luogu!";
	}
	else if(t==2){
		cout<<"6 4";
	}
	else if(t==3){
		cout<<"3"<<endl<<"12"<<endl<<"2";
	}
	else if(t==4){
		cout<<fixed<<setprecision(3)<<500.0/3;
	}
	else if(t==5){
		cout<<"15";
	}
	else if(t==6){
		cout<<"10.8167";
	}
	else if(t==7){
		cout<<"110"<<endl<<"90"<<endl<<"0";
	}
	else if(t==8){
		cout<<"31.4159"<<endl<<"78.5398"<<endl<<"523.599";
	}
	else if(t==9){
	    cout<<"22";
	}
	else if(t==10){
	    cout<<"9";
	}
	else if(t==11){
		cout<<1.0*100/3;
	}
	else if(t==12){
		cout<<"13"<<endl<<"R";
	}
	else if(t==13){
		cout<<"16";
	}
	else if(t==14){
		cout<<"50";
	}
	return 0;
}

制作不易,点个赞呗。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于洛谷上的p1036题目,我们可以使用Python来解决。下面是一个可能的解法: ```python def dfs(nums, target, selected_nums, index, k, sum): if k == 0 and sum == target: return 1 if index >= len(nums) or k <= 0 or sum > target: return 0 count = 0 for i in range(index, len(nums)): count += dfs(nums, target, selected_nums + [nums[i]], i + 1, k - 1, sum + nums[i]) return count if __name__ == "__main__": n, k = map(int, input().split()) nums = list(map(int, input().split())) target = int(input()) print(dfs(nums, target, [], 0, k, 0)) ``` 在这个解法中,我们使用了深度优先搜索(DFS)来找到满足要求的数列。通过递归的方式,我们遍历了所有可能的数字组合,并统计满足条件的个数。 首先,我们从给定的n和k分别表示数字个数和需要选取的数字个数。然后,我们输入n个数字,并将它们存储在一个列表nums中。接下来,我们输入目标值target。 在dfs函数中,我们通过迭代index来选择数字,并更新选取的数字个数k和当前总和sum。如果k等于0且sum等于target,我们就找到了一个满足条件的组合,返回1。如果index超出了列表长度或者k小于等于0或者sum大于target,说明当前组合不满足要求,返回0。 在循环中,我们不断递归调用dfs函数,将选取的数字添加到selected_nums中,并将index和k更新为下一轮递归所需的值。最终,我们返回所有满足条件的组合个数。 最后,我们在主程序中读入输入,并调用dfs函数,并输出结果。 这是一种可能的解法,但不一定是最优解。你可以根据题目要求和测试数据进行调试和优化。希望能对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值