摘要: 已知n个整数x1, x2, .., xn,以及一个整数k,k < n。从n个数字 中任选k 个整数相加,可分别得到一系列的和。 例如当n = 4, k = 3,四个整数分别为3,7,12,19时,可得全部的组合与他们的和为: 3 + 7 + 12 = 22 3 + 7 + 19 = 29 7 + 1 阅读全文
posted @ 2019-04-28 20:43 莫瑞 阅读(751) 评论(0) 推荐(0) 编辑
摘要: 求[l, r]这段区间中有多少素数 1 ≤ l ≤ r ≤ 10 ^6 一个显然的想法是利用for循环枚举[l, r]中的每一个数。然后利用朴素算法O(√X)进行判断。 整体复杂度O(N√N),不符合要求 仍然考虑枚举判断每个数是否是素数,但我们这次从2开始判断。 考虑对于任意一个数x,不论x是否为 阅读全文
posted @ 2019-04-28 19:42 莫瑞 阅读(724) 评论(0) 推荐(0) 编辑
摘要: 1.对于判断一个数n是否为素数,最朴素的方法是按素数的定义,试除以从2开始到m-1的整数,如果无一例外地不能整除,则该数一定是素数。 质数(prime number)又称素数,有无限个。 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。 2.想一想 阅读全文
posted @ 2019-04-28 19:20 莫瑞 阅读(1121) 评论(0) 推荐(0) 编辑
摘要: 当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。 使用freopen函数可以解决测 阅读全文
posted @ 2019-04-28 18:49 莫瑞 阅读(608) 评论(0) 推荐(0) 编辑
摘要: 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。 运算说明 1. and运算 & and运算通常用于二进制的取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示 阅读全文
posted @ 2019-04-28 10:18 莫瑞 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 十进制与二进制之间的转换: (1)十进制转二进制的转换原理:除以2,反向取余数,直到商为0终止。 9(十进制)→1001(二进制) (2)二进制转十进制的转换原理: 就是用进制的定义:二进制的每一个乘以2的n次方,n从0开始,每次递增1。然后得出来的每个数相加。 1110(二进制)→ 14(十进制) 阅读全文
posted @ 2019-04-28 10:15 莫瑞 阅读(1850) 评论(0) 推荐(0) 编辑