数学

日历计算不是简单的数学加减关系

杀马特。学长 韩版系。学妹 提交于 2020-01-14 15:28:56
如题:日历计算不是简单的数学加减关系。 下面是典型的错误代码示例。 //首先过滤过期或失效文件 int date = EventUtil.getTime(pathname.lastModified()); int currDate = EventUtil.getTime(-1); if (date + EventConstants.sReserveDays <= currDate) { //过期文件 pathname.delete(); return false; } /** * 根据时间Long 返回对应的年月日 * * @param time -1表示当前时间 * @return */ public static int getTime(long time) { Date date; if (time == -1) { date = new Date(); //当前时间,转为整数存储 } else { date = new Date(time); } return Integer.parseInt(DateFormat.format("yyyyMMdd", date).toString()); } 来源: CSDN 作者: 书虫676 链接: https://blog.csdn.net/logan676/article/details/103970939

初等代数

匆匆过客 提交于 2020-01-14 04:48:19
初等代数是研究数字和文字的代数运算理论和方法,更确切的说,是研究实数和复数,以及以它们为系数的多项式的代数运算理论和方法的数学分支学科。 初等代数的中心内容是解方程,因而长期以来都把代数学理解成方程的科学,数学家们也把主要精力集中在方程的研究上。它的研究方法是高度计算性的。 要讨论方程,首先遇到的一个问题是如何把实际中的数量关系组成代数式,然后根据等量关系列出方程。所以初等代数的一个重要内容就是代数式。 由于事物中的数量关系的不同,大体上初等代数形成了整式、分式和根式这三大类代数式。代数式是数的化身,因而在代数中,它们都可以进行四则运算,服从基本运算定律,而且还可以进行乘方和开方两种新的运算。通常把这六种运算叫做代数运算,以区别于只包含四种运算的算术运算。 在初等代数的产生和发展的过程中,通过 解方程 的研究,也促进了数的概念的进一步发展,将 算术中讨论的整数和分数的概念 扩充到有理数的范围,使数包括正负整数、正负分数和零。这是初等代数的又一重要内容,就是数的概念的扩充。 有了有理数,初等代数能解决的问题就大大的扩充了。但是,有些方程(i 2 =-1)在有理数范围内仍然没有解。于是,数的概念在一次扩充到了实数,进而又进一步扩充到了复数。(实际上, 实数与数轴上的点一一对应,复数则可以用平面直角坐标系上的点来表示 。后来,人们又将复数与平面向量联系起来,并使其在电工学、流体力学

从数学上证明墨菲定律

假装没事ソ 提交于 2020-01-14 01:16:26
文章目录 引言 证明 举例 结论 附:所使用的代码 引言 昨天有别人有一个关于墨菲定律的争论,对方说墨菲定律是伪科学,我一时也没有找到相应的定理,于是我就用数学简单证明一下。 首先,我们要知道什么是墨菲定律。墨菲定律(Murphy’s Law)的基本思想是小概述事件一定会发生。国内因为中文翻译和个人理解的问题,这条定律的翻译和解释有很多,根据根据Wikipedia,它的原文是: Whatever can happen will happen if we make trials enough. ,即 任何事情如果有可能会发生,那么它就一定会发生,只要试验足够多次 。后来,又被简化成: If it can happen, it will happen. ,即 有可能会发生的事情一定会发生 。本来墨菲定律的意思是很清楚的,但是由于语言的问题,加之每个人的理解差异很大,在翻译成中文以后,表述的差异就很大。然后再经过人多口杂地传播,其本意已经被曲解了,比如说“如果一件事有可能被做坏,让他去做就一定会更坏。”,“你担心的事情总会发生”。 所以,墨菲定律的核心思想就一条:小概率事件一定会发生,前提是实验足够多次。下面我们就对此进行证明。 证明 根据这个表述,我们可以使用最基本的概率学知识来证明,过程如下。 证明 :设某事件A发生的概率为 P ( A ) = p , 其 中 0 < p < 1 P

F - LJJ王国的数学家 递归

两盒软妹~` 提交于 2020-01-14 00:06:54
F - LJJ王国的数学家 Description 想要成为LJJ王国的数学家,你要秒切这样一个问题:给定n和k,输出k个非负整数加和等于n的所有方案。(按字典序) Input 两个整数分别为n和k。(0<k<=n<=10) Output 按字典序输出所有方案。 Sample Input 3 3 Output 3=0+0+3 3=0+1+2 3=0+2+1 3=0+3+0 3=1+0+2 3=1+1+1 3=1+2+0 3=2+0+1 3=2+1+0 3=3+0+0 实现代码: #include<bits/stdc++.h> using namespace std; int a[108],b,c; void f(int m,int n) { int i,j; if(n==1) { a[n]=m; printf("%d=",b); for(i=c; i>=1; i–) { if(i>1) printf("%d+",a[i]); else printf("%d\n",a[i]); } } else { for(j=0; j<=m; j++) { a[n]=j; f(m-j,n-1); } } } int main() { int n,m; scanf("%d%d",&b,&c); n=b; m=c; f(n,m); return 0; } 来源: CSDN 作者: Ditto_xff

一个退休程序员让百年数学难题逼近理论极限

我只是一个虾纸丫 提交于 2020-01-13 17:15:38
试想一下,如果你的裤子破了好几个洞,每个洞形状各异,但是宽度都不超过1厘米。 该如何设计一个通用的补丁,能够把所有的洞都补上呢? 一个退休程序员让百年数学难题逼近理论极限 这个问题在数学上叫做:万有覆盖问题(universal covering problem)。 已经让数学家思考了一百年。 乍一听上去,这像是一个很简单的问题。 但是稍微想一想,似乎又不那么简单。 比如一个边长为1的等腰三角形,和一个直径为1 的圆形,两者的直径都为 1。 但是,这个三角形就不能被圆形覆盖。 一个退休程序员让百年数学难题逼近理论极限 而最近,一个退休程序员,用高中方法取得了最新进展。 为什么这么难? 这个难题的的提出者,法国著名数学家:勒贝格(Henri Léon Lebesgue)。 一个退休程序员让百年数学难题逼近理论极限 △Henri Léon Lebesgue 他提出了勒贝格积分,拓宽了积分学的研究范围。 在1914时,他给好朋友Julius Pál(也是数学家)写信时提了一个问题: 在一个平面上,找一个最小区域,让它可以覆盖直径不超过1个单位的面积? 直径不超过1个单位的任意形状,就是一个封闭曲线的边缘上,最远两点的距离不超过1个单位。 这个问题最难的部分是: 无法穷举所有直径为1的形状到底长什么样子。 直径为1的形状千千万,到底用哪种万能补丁才能全部覆盖它们呢?

Contest100000590 - 《算法笔记》5.3小节——数学问题->分数的四则运算

*爱你&永不变心* 提交于 2020-01-13 09:37:02
文章目录 Contest100000590 - 《算法笔记》5.3小节——数学问题->分数的四则运算 5.3小节——数学问题->分数的四则运算 5.3.1 分数的表示与化简 5.3.2 分数的四则运算 5.3.3 分数的输出 分数类定义与操作代码汇总 Codeup习题 1067ProblemA分数矩阵 总结下: Contest100000590 - 《算法笔记》5.3小节——数学问题->分数的四则运算 5.3小节——数学问题->分数的四则运算 5.3.1 分数的表示与化简 //5.3.1分数的表示与化简 struct Fraction //分数 { int up , down ; //分子、分母 } ; Fraction reduction ( Fraction result ) { if ( result . down < 0 ) //分母为负数,令分子分母都变为相反数 { result . up = - result . up ; result . down = - result . down ; } if ( result . up == 0 ) //如果分子为0 { result . down = 1 ; //令分母为1 } else //如果分子不为0,进行约分 { int d = gcd ( abs ( result . up ) , abs ( result .

数学思维和逻辑能力

爷,独闯天下 提交于 2020-01-13 05:23:24
  在无数个辗转反侧、难以入寐的夜晚,我用力地思考着一个问题:到底要不要走上编程这一条道路?想要成为一个合格的编程人员,深谙编程之道,这条路并不好走。或枯燥无味,或心力憔悴,但亦能寻到其中乐趣,发现常人难以发现的背后之美。所以,痛定思痛,决定搭上这辆于我而言的编程末班车。   接触编程,很多人第一个想法就是选择一门什么程序设计语言,我也为之苦恼了很久。找寻一圈,最后回到起点,发现了一个更加重要的东西:编程本身的思想。就此,我打一个简单的比方:学习程序设计就好比学习射击,编程语言就好比我们手里紧紧握住的枪械,五花八门,种类繁多。学习设计必须要选择其中的一种,不可能没有枪还能学好射击的,也不可能同时掌握所有的枪械。但是,如果你通过一种枪械掌握了射击本身的技术要求,再去学别的也就触类旁通了。所以学习一门编程语言,从中主要学习的是编程本身的思想,学习的是用程序设计的眼光来看待问题。这就需要我们具有一定的逻辑分析和数学建模的能力,逻辑分析和数学我认为应该是学好程序设计的基础,当你需要变成解决一个问题的时候,核心之算法体现着我们的逻辑,随之贯穿整个编程的就是数学的思维。   基于冯·诺依曼体系结构的程序设计过程,是“分析问题——建立数据模型——选择数据结构——翻译成计算机语言”的过程,在整个过程中,最后一步才是我们通常所讲:写代码,在此之前我们都要将逻辑和数学思维贯彻始终。   在一些项目中

数学专题测试3 题解

我的梦境 提交于 2020-01-12 11:46:44
A. young 大概的意思是说,由低到高考虑不同的二进制位。 形成一个最小生成树,那么最高二进制位不同的情况一定只出现一次。 所以除掉最高位之后的情况形成两个集合,递归下去$dp$就好了。 一个技巧是,将每个方案的最小值的总和,即$\sum \limits_{i}min(i)$转化为$\sum \limits_{i=1}^{\infty}f(min>=i)$。 然而还没有改这个题,所以以上都是我在yy。 B. Simple 隐藏的很深的一道题,完全没有思路。 颓过题解之后会发现并不难,题意要求从首位开始的数是最小的。 也就是说首位的字典序最小。 不妨考虑每一个循环同构串$S$,当这个串存在长度小于$|S|$的循环节,那么无论如何循环都无法使首位的字典序最小。 否则,只有把字典序最小的串放到最前面是合法的。 所以只要求出不同长度的不含循环节的串个数就好了。 然后就发现这个东西是显然的莫比乌斯反演,容易发现要求前缀和,顺便推推式子写个杜教筛就好了。 C. 小 H 爱染色 容易发现答案是方案数乘对应的多项式,其中方案数是组合数减组合数的形式。 因为组合数中选的个数$m$并不大,可以发现这个组合数实际上是$m$次多项式的形式。 要求的是组合数的平方卷积给定的系数,所以这个玩意将是$3m+1$次多项式的形式。 所以可以通过$NTT$优化插值处理出一些$F$的取值,再通过$F

包管理工具比较

旧街凉风 提交于 2020-01-12 11:05:48
目录 包管理工具比较 Ref 包管理工具比较 vcpkg Conan: 把二进制按(包名,平台,版本,编译选项)这样的方式,在服务器上传并索引,使用时各取所需 Bazel: 源码管理就得相当简单,只有代码了。那二进制怎么办?把它缓存起来 hunter nuget Ref https://www.zhihu.com/question/263416411 https://github.com/microsoft/vcpkg 来源: https://www.cnblogs.com/cutepig/p/12182079.html