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 · 353 阅读 · 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 · 7449 阅读 · 0 评论 -
快速幂取余(大数运算/算法优化)
快速幂取余原创 2015-12-04 19:20:51 · 1757 阅读 · 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 · 333 阅读 · 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 · 888 阅读 · 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 · 593 阅读 · 0 评论 -
HDU1205 鸽巢原理/找规律
1)利用鸽巢原理,很简单做。让所有相同种类的糖果分开,我们让最大数目的糖果作为挡板,放在其他糖果间。而为了让最大数目的糖果自己不会连续出现,所以确保每一个之间一定要有别的糖果,所以求得其他糖果数量之和,如果和大于等于(最大数目的糖果数目-1),问题就会得到解决。不用担心其他糖果会连续出现,如果有一种糖果连续出现,那么这种糖果的数量一定大于最大糖果,与假设不符,遂不成立。#include原创 2016-05-30 20:17:27 · 669 阅读 · 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 · 424 阅读 · 0 评论 -
POJ1005 精度问题、向上取整ceil()与向下取整floor()
1 在 中向上取整ceil();向下取整floor()2#include #include #include #define M_PI 3.14159265358979323846using namespace std;int main(){ //freopen("out.txt","w",stdout); int kase; scanf("%d"原创 2016-10-29 09:32:02 · 662 阅读 · 0 评论