数学

蓝桥杯:乘积最大II 动态规划解法

混江龙づ霸主 提交于 2020-02-12 00:33:59
蓝桥杯:乘积最大II 动态规划解法 因为数据不大,存在【 暴力解法 】 问题描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子: 有一个数字串:312, 当N=3,K=1时会有以下两种分法: 3 * 12=36 31 * 2=62 这时,符合题目要求的结果是:31*2=62 现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。 输入格式 程序的输入共有两行: 第一行共有2个自然数N,K(6≤N≤40,1≤K≤6) 第二行是一个长度为N的数字串。 输出格式 输出所求得的最大乘积(一个自然数)。 样例输入 4 2 1231 样例输出 62 思路 问题: 求解在前 i 个数字中插入 j 个乘号得到的乘积最大值 状态定义: // dp[i][j]表示在前i个数字中插入j个乘号得到的乘积最大值 int dp [ ] [ ] ; 状态转移: 在前i个数中插入j个乘号,问题转换为: 在前k(下标 [1, k

C语言第三课:循环语句

梦想与她 提交于 2020-02-12 00:33:22
一、用 while 语句循环做数学运算 例 1:求 2+4+6+···+100。 # include <stdio.h> int main ( ) { int sum = 0 , n = 1 , a = 2 ; while ( n <= 50 ) { n + = 1 ; sum + = a ; a + = 2 ; } printf ( "计算结果是%d\n" , sum ) ; return 0 ; } 例 2:求 2×4×6×8×···×100。 # include <stdio.h> int main ( ) { int n = 1 , chengji = 1 , a = 2 ; while ( n <= 50 ) { n + = 1 ; chengji * = a ; a + = 2 ; } printf ( "计算结果是%d\n" , chengji ) ; return 0 ; } 例 3:求(1!+2!+3!+…+20!)。 # include <stdio.h> int main ( ) { int sum = 0 , n = 1 , a = 1 ; while ( n <= 20 ) { n + = 1 ; sum + = a ; a * = n ; } printf ( "计算结果是:%d\n" , sum ) ; return 0 ; } 二、 用 while

Lua math数学函数库 对于取整存在误差的情况(例如math.modf())

馋奶兔 提交于 2020-02-12 00:29:36
今天在做项目时有个需要将编号转换成二维数组序号的需求,代码如下: function UIMineClearance:CalculatePosByIndex(rIndex) -- 输入一个编号 返回一个10 * 10 数组的下标 local lX , lY = math.modf(rIndex / 10) lY = math.floor(lY * 10) return lX + 1,math.ceil(lY) + 1 end 然后我发现有些结果往往和预期不同,我疯狂的打印每一步的变量( 脚本语言不能进行调试是真的难受 ),最终让我揪出个大问题,math.modf() 函数有误差。为了证实我的想法,我单独打印了一下测试的值。 local a,b = math.modf(12/10) print(a,b) print(math.floor(b * 10)) math.modf(x)方法是返回两个值,第一个值是浮点类型x的整数部分,第二个值是浮点类型x的小数部分。 打印如下: 看到没有,最坑的来了,经过math.floor()的向下取整后 发现竟然变成了1,说明modf方法 在返回第二个值的时候是有误差的 应该是 0.1999999999 所以最终我将小数处理前乘上100在进行运算 尽量规避误差。最终代码: function UIMineClearance

蓝桥杯 算法训练 P0505

时间秒杀一切 提交于 2020-02-11 16:18:37
算法训练 P0505 资源限制 时间限制:1.0s 内存限制:256.0MB   一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5!=1 2 3 4 5=120,因此5!最右边的那个非0的数字是2。再如,7!=5040,因此7!最右边的那个非0的数字是4。再如,15!= 1307674368000,因此15!最右边的那个非0的数字是8。请编写一个程序,输入一个整数n(0<n<=100),然后输出n!最右边的那个非0的数字是多少。 输入:   7 输出:   4    思路:本题的思路和我上篇阶乘位数的思路一样,只是其测试范围比较大,所以需要每次计算后去掉尾数部分为零的数,最后输出尾数部分不为零的数即可。 代码如下: # include <stdio.h> int main ( ) { int n , i , s ; long long sum = 1 , j = 1 ; scanf ( "%d" , & n ) ; for ( i = 1 ; i <= n ; i ++ ) { sum * = i

追求真理之---无理数

♀尐吖头ヾ 提交于 2020-02-10 21:49:21
大家的数学启蒙都是从哪儿开始的呢?大概都是从1,2,3开始的吧。有了数字作为基础,才会陆陆续续学会了公式,然后就真的开始学习了数学。直到后来,我们的数学能力发展一定程度之后,就发现,其实数学里的数字只有1,2,3是不够用的。 于是出现了小数,分数,其中关于分数的研究,中国古人开创了先河,大约比欧洲早了1400多年。 数学都是从数字开始 有了分数之后,我们觉得还是不够用,为什么呢?有些数量的表示你用整数,分数,小数都不行。于是乎,必须要出现一种全新的数来满足人们的需要。然后经过一个特殊的时机,无理数就出现了。 事实上,无理数从发现,到被承认真是一场没有硝烟的战争啊。 一场没有硝烟的战争 让我们从公元前580年的古希腊说起,当时的古希腊有一个名叫做毕达哥拉斯的大神,相信提到这个名字,很多同学们对这个名字实在是太熟悉了。禁不住大声说出不就是那个毕达哥拉斯定理(其实就是我们国家的勾股定理)的毕达哥拉斯嘛,其实这只是他众多研究中微不足道的一个,而且并不是他提出的,而是他给出的证明。 毕达哥拉斯 毕达哥拉斯是当时有名的数学家,科学家及哲学家,以他当时的名气组成了一个毕达哥拉斯团体,这个团体在现在来说像是个研究机构。而毕达哥拉斯是这个团体的领头人,他们认为“数”是万物的本源,这里的数是指整数、分数。因此世间一切事物都可以是数和数的比例,这更像是一个哲学观点。自然

BZOJ - 1257 余数之和(数学)

℡╲_俬逩灬. 提交于 2020-02-10 19:44:18
题目链接: 余数之和 题意:给定正整数$n$和$k$,计算$k\%1+k\%2+\dots+k\%n$的值 思路:因为$k\%i=k-\left \lfloor \frac{k}{i} \right \rfloor * i$,所以问题就转换为计算$n*k-\sum _{i=1}^{n}\left \lfloor \frac{k}{i} \right \rfloor*i$ 在某一段区间$(l,r)$内$\left \lfloor \frac{k}{i} \right \rfloor$的值是相等的,并且等于$\left \lfloor \frac{k}{l} \right \rfloor$,其中$r=\left \lfloor \frac{k}{\left \lfloor \frac{k}{l} \right \rfloor} \right \rfloor$ 证明:设$g(x)=\left \lfloor \frac{k}{\left \lfloor \frac{k}{x} \right \rfloor} \right \rfloor$ 因为 $$\left \lfloor \frac{k}{x} \right \rfloor\leq \frac{k}{x}$$ 所以 $$\left \lfloor \frac{k}{\left \lfloor \frac{k}{x} \right

BIM人才三角

心不动则不痛 提交于 2020-02-10 14:19:36
BIM 人才三角聚焦六个关键技能和一个中心。 1. 基础能力 基础能力分三块: 语言能力 实践能力 数学能力 1.1 语言能力 语言是指自然语言,如汉语和英语。获取其他知识的能力以及学习、理解、沟通能力都与该能力密切相关。 1.2 数学能力 有关数学的一切,如计算、数学思维、逻辑、抽象、分析等能力。 1.3 实践能力 实践能力是指实际应用能力,如探索、实验、革新、发明等能力。 解决问题的能力与数学能力及实践能力密切相关。 这三块基础能力,不但是小学生的必修能力,也是人类文明的根基。 基础能力融合发展,推动了科学的进步。扩展能力由此而生。 2. 扩展能力 扩展能力分三块: 专业技术能力 信息技术能力 管理能力 2.1 专业技术能力 专业技术能力可以理解为是广义的语言能力。 因 BIM 是关于建筑的,所以该能力指建筑语言能力,涉及建筑知识,如建筑、结构、建筑环境与设备工程等专业能力。语言不通就是鸡同鸭讲。建筑相关方必须在彼此能听懂的前提下才能沟通,所以专业背景知识必不可少。 2.2 信息技术能力 信息技术能力可以理解为是广义的数学能力。 该能力涉及数字技能,如算法、编程,数据库等能力。该能力直接决定了解决具体问题的技术手段。 2.3 管理能力 管理能力可以理解为是广义的实践能力。 该能力涉及管理相关能力,如战略、领导、财务,经营等能力。彼得·德鲁克先生的著作《管理的实践

高等数学学习笔记——高等数学(二)学习笔记汇总

有些话、适合烂在心里 提交于 2020-02-09 23:09:02
高等数学二(共26讲)课程大纲及对应的学习笔记 第一讲 导数概念 ( 1 、问题引入 2 、问题求解 3 、导数的定义及几何意义 4 、导数存在的条件 5 、导函数) https://blog.csdn.net/hpdlzu80100/article/details/103340842 第二讲 导数运算法则 (1、问题引入 2.1、求导法则——四则运算法则 2.2、求导法则——反函数与复合函数求导法则 3、基本初等函数求导公式 4、导数综合计算) https://blog.csdn.net/hpdlzu80100/article/details/103359671 第三讲 高阶导数 (1、问题引入 2、高阶导数 3、隐函数的导数 4、参数方程确定函数的导数) https://blog.csdn.net/hpdlzu80100/article/details/103446828 第四讲 局部线性化与微分 (1、问题引入 2、微分的概念 3、微分在近似计算中的应用 4、一阶微分形式的不变性 5、高阶微分) https://blog.csdn.net/hpdlzu80100/article/details/103458893 第五讲 导数在实际问题中的应用 (1、问题引入 2、变化率 3、相关变化率) https://blog.csdn.net/hpdlzu80100/article

每个人都应该懂点函数式编程

倖福魔咒の 提交于 2020-02-09 03:57:47
目录 一个问题 函数式编程中的函数 数学与函数式编程 混合式编程风格 一个问题 假设现在我们需要开发一个绘制数学函数平面图像(一元)的工具库,可以提供绘制各种函数图形的功能,比如直线f(x)=ax+b、抛物线f(x)=ax²+bx+c或者三角函数f(x)=asinx+b等等。那么怎么设计公开接口呢?由于每种行数的系数(a、b、c等)不同,并且函数构造也不同。正常情况下我们很难提供一个统一的接口。所以会出现类似下面这样的公开方法: //绘制直线函数图像 public void DrawLine(double a, double b) { List<PointF> points = new List<PointF>(); for(double x=-10;x<=10;x=x+0.1) { PointF p =new PointF(x,a*x+b); points.Add(p); } //将points点连接起来 } //绘制抛物线图像 public void DrawParabola(double a, double b, double c) { List<PointF> points = new List<PointF>(); for(double x=-10;x<=10;x=x+0.1) { PointF p =new PointF(x,a*Math.Pow(x,2) + b*x

必会SQL练习题

只愿长相守 提交于 2020-02-08 09:39:56
(1)表名:购物信息 购物人 商品名称 数量 A 甲 2 B 乙 4 C 丙 1 A 丁 2 B 丙 5 …… 给出所有购入商品为两种或两种以上的购物人记录 答:select * from 购物信息 where 购物人 in (select 购物人 from 购物信息 group by 购物人 having count(*) >= 2); (2)表名:成绩表 姓名 课程 分数 张三 语文 81 张三 数学 75 李四 语文 56 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 49 给出成绩全部合格的学生信息(包含姓名、课程、分数),注:分数在60以上评为合格 答:select * from 成绩表 where 姓名 not in (select distinct 姓名 from 成绩表 where 分数 < 60) 或者: select * from 成绩表 where 姓名 in (select 姓名 from 成绩表 group by 姓名 having min(分数) >=60) (3)表名:商品表 名称 产地 进价 苹果 烟台 2.5 苹果 云南 1.9 苹果 四川 3 西瓜 江西 1.5 西瓜 北京 2.4 …… 给出平均进价在2元以下的商品名称 答:select 名称 from 商品表 group by 名称 having avg(进价) < 2