ACM 数学
文章平均质量分 62
嚜寒
盖士人读书,第一要有志,第二要有识,第三要有恒。
有志则不甘为下流;
有识则知学问无尽,不敢以一得自足,如河伯之观海,如井蛙之窥天,皆无识者也;
有恒则断无不成之事。
展开
-
POJ1265 计算几何 + 皮克定理 + 公约数确定一条边的点的个数
0 题目 1 分析: 皮克定理: 内部的点的个数 + 边上的点的个数/2 + 1 = 该多边形面积 利用向量叉乘求面积,利用最大公约数求一条边上的点的个数,结合皮克定理,求出内部点的个数。 2 #include #include #include #include ///int a,int b; (double)(a/b)得到的是int,((double)a)/b 与 a/原创 2016-08-12 15:16:06 · 344 阅读 · 0 评论 -
第二类斯特林(Stirling)数的简单介绍和计算(小球入盒)
组合数学中一个典型的问题是:把从1到n标号的n个球放到k个无区别的盒子里,要求每个盒子里至少有一个小球,问不同的放法数量。例如,如果用A、B、C、D分别表示4个球,要分成两组(即放入无区别的盒子里),其方法有7种: {A,B},{C,D} {A,C},{B,D} {A,D},{B,C} {A},{B,C,D} {B},{A,C,D} {C},{A,B,D} {D},{A,B,C}原创 2015-11-28 20:33:59 · 7401 阅读 · 0 评论 -
快速幂取余(大数运算/算法优化)
快速幂取余原创 2015-12-04 19:20:51 · 1740 阅读 · 0 评论 -
hdu 1722Cake(公约数的应用和求法)
1)平分成q块需要切q刀,平分成p块需要p刀,两者都符合只需要剪去重复的那几刀即可(解题思路说明,我把问题想复杂了,应该简单、直接点去想怎样解决问题) #include using namespace std; int gcd(int m,int n) { return m==0?n:gcd(n%m,m);//gcd是公约数的简写 } int main() { int p,q;原创 2016-02-18 17:24:59 · 326 阅读 · 0 评论 -
sdut2605山东省赛第四届/( A^f(1)+A^f(2)+ ... + A^f(n) )% P/存储中间值/将大数打表并用两个数组组合表示
1)如果用快速幂求A^X,那么整道题的最坏时间复杂度为:O(n)=(40*(10^6)*log(n)=O(10^9),超时。仔细看这道题的特点,如果用快速幂计算单个A^X还好,但是当n足够大,我们需要计算n个A^X时,不如提前打表,将所有可能的A^X计算出来,存入数组,直接调用来得方便。而(A^X)最多有P个不同值,P最大为10^9,数组的最大长度不过264144个(一个数组占1M的栈空间,1个i原创 2016-03-20 17:51:36 · 881 阅读 · 0 评论 -
HDU1060 n^n求首位
0) 题意:t个测试案例,每一次输入n,求n^n的第一位数是几。(1 分析:刚开始用大数模板,结果n>100,输出n^n时就已经在输出窗口连续输出了三行数字,10^9规模的n肯定不行;之后一直没做出来,比赛完看解题报告get到,大数是可以利用log来做以下转化,转化为10的幂的形式,进而分成10的整数部分×10的小数部分,从而方便得到首位数字,分析如下,耐心原创 2016-05-16 00:14:03 · 582 阅读 · 0 评论 -
HDU1205 鸽巢原理/找规律
1) 利用鸽巢原理,很简单做。 让所有相同种类的糖果分开,我们让最大数目的糖果作为挡板,放在其他糖果间。而为了让最大数目的糖果自己不会连续出现,所以确保每一个之间一定要有别的糖果,所以求得其他糖果数量之和,如果和大于等于(最大数目的糖果数目-1),问题就会得到解决。不用担心其他糖果会连续出现,如果有一种糖果连续出现,那么这种糖果的数量一定大于最大糖果,与假设不符,遂不成立。 #include原创 2016-05-30 20:17:27 · 659 阅读 · 0 评论 -
HDU5650 找规律+组合排列中的小知识点
0 题目 给出n个数,将n个数的所有集合都列出来,每个集合内的元素异或得到一个数,将所有集合的数再异或。 1 分析 规律① 如果n=1,那么输出该数;如果n>1,那么在这n个数组成的集合中,每个数出现的个数都是偶数,那么最后的异或结果就是0。 (已证,假如n个数分别为num1,num2,...numN,那么以num1出现次数为例,集合之中元素个数为1且包含num1的集合个数为1,集原创 2016-08-10 01:19:34 · 419 阅读 · 0 评论 -
POJ1005 精度问题、向上取整ceil()与向下取整floor()
1 在 中 向上取整ceil();向下取整floor() 2 #include #include #include #define M_PI 3.14159265358979323846 using namespace std; int main() { //freopen("out.txt","w",stdout); int kase; scanf("%d"原创 2016-10-29 09:32:02 · 653 阅读 · 0 评论