随笔分类 -  数论

摘要:判断一点O是否在三角形中,只要满足: 面积S(abc)=S(oab)+S(Obc)+S(oca); 原理是向量的叉积(为三角形面积的2倍)平面向量 三个点a(x0,y0),b(x1,y1),c(x2,y2); 向量B=b-a; 向量C=c-a; X1=B的衡坐标; i j k X1 y1 0 X2 y2 0double area(double x0,double y0,double x1,double y1,double x2,double y2)//计算三角形面积{ return fabs(... 阅读全文
posted @ 2012-06-25 22:11 Szz 阅读(294) 评论(0) 推荐(0)
摘要:#include<stdio.h>#include<string.h>#define maxn 5000int f[maxn];//存放的是结果int main(){ int n,i,j; while(scanf("%d",&n)!=EOF) { memset(f,0,sizeof(f)); f[0]=1; for(i=2;i<=n;i++) { int c=0;//进位 for(j=0;j<maxn;j++) { ... 阅读全文
posted @ 2012-06-25 19:55 Szz 阅读(163) 评论(0) 推荐(0)
摘要:1 从组合数的定义可以知道。C(n, m) = C(n-1, m) + C(n-1, m-1); 2 所以,根据这个公式可以递归的求得组合数,代码如下: 3 4 long long C(int n, int m) { 5 if(m == 0 || n == 0 || n == 1 || m == n) return 1; 6 if(aug[n][m] != 0) return aug[n][m]; 7 8 aug[n-1][m] = C(n-1, m); 9 aug[n-1][m-1] = C(n-1, m-1);10 11 ... 阅读全文
posted @ 2012-05-26 17:14 Szz 阅读(249) 评论(0) 推荐(0)
摘要:1http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2401 /* 2 最大矩形面积,把边界点加上 3 从左往右 处理一遍; 4 再从上往下处理一遍; 5 */ 6 7 #include<stdio.h> 8 #define maxn 20000 9 #include<cmath> 10 #include<algorithm> 11 using namespace std; 12 int min(int x,int y) 13 { 14 if(x<y)r 阅读全文
posted @ 2012-05-06 12:04 Szz 阅读(321) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4038这题的题意就是给一序列的数,有两种操作,一种是把序列中某个数的值加1,要么在序列中增添一个数为1,然后给出操作数,最后要求这些数的乘积最大,求出这个乘积。做这个题要考虑的细节很多,首先要把负数的个数求出,如果为奇数,那么要把最大的那个负数尽量加到0,就相当于转化为偶数的情况了,然后负数就不用在管了,这时候,序列中如果有0的话,很显然他们相乘就是0,所以尽量把所有的0要变成1,之后,如果操作数还有剩余,就要尽量把所有的1变成2了,因为1在序列中是没有任何用处的,增加到2就是翻一番,用1个操作数达到这种效果 阅读全文
posted @ 2012-04-07 10:16 Szz 阅读(321) 评论(0) 推荐(0)
摘要:<a href="http://acm.hdu.edu.cn/showproblem.php?pid=4033">http://acm.hdu.edu.cn/showproblem.php?pid=4033</a> 思路:二分 先找 两边之和的最小max 和两边只差的最大 min 则边的长度 L 必然 min<l<max 然后二分求解 注意啊,一开始定义 eps 是为e-6,wa 改为e-8 ac #include<stdio.h>#define N 1000#include<math.h>#define eps 阅读全文
posted @ 2012-04-05 20:45 Szz 阅读(196) 评论(0) 推荐(0)
摘要:快速幂取模 (2012-01-02 21:37:56)转载▼快速幂取模快速幂取模就是在O(logn)内求出a^n mod b的值。算法的原理是ab mod c=(a mod c)(b mod c)mod c因此很容易设计出一个基于二分的递归算法。以下是我的代码,以下代码必须保证输入的是合法的表达式,比如不能出现0^0 mod b:longexp_mod(longa,longn,longb){longt;if(n==0)return1%b;if(n==1)returna%b;t=exp_mod(a,n/2,b);t=t*t%b;if((n&1)==1) t=t*a%b;returnt;} 阅读全文
posted @ 2012-03-21 09:37 Szz 阅读(232) 评论(0) 推荐(0)