摘要: #include<stdio.h>#include<stdlib.h>int num[1024][300]={0};int main(){ int n; num[0][1]=1;num[1][1]=1;num[2][1]=2;num[3][1]=4; for( int i=4; i<=1000; i++ ) { for( int j=1;j<300; j++ ) { num[i][j]+=num[i-1][j]+num[i-2][j]+num[i-4][j]; num[i][j+1]=num[i][j]/10; num[i][j]%=10; } } whil 阅读全文
posted @ 2011-08-16 21:24 wutaoKeen 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 该题与HDU1086相似都是线段相交的问题,在这里就不解释线段相交了( 在HDU 1086You can Solve a Geometry Problem too已经解释了)不过我的代码还是注释一下:#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct T{ double x,y; }point; point start[200024],end[200024];inline double judge( point p1,point p2,point p )//判断点是否在直线的 阅读全文
posted @ 2011-08-16 20:18 wutaoKeen 阅读(399) 评论(0) 推荐(1) 编辑
摘要: 求任意多边形的重心已知一多边形没有边相交,质量分布均匀。顺序给出多边形的顶点坐标,求其重心。分析:求多边形重心的题目大致有这么几种:1,质量集中在顶点上。n个顶点坐标为(xi,yi),质量为mi,则重心 X = ∑( xi×mi ) / ∑mi Y = ∑( yi×mi ) / ∑mi 特殊地,若每个点的质量相同,则 X = ∑xi / n Y = ∑yi / n2,质量分布均匀。这个题就是这一类型,算法和上面的不同。 特殊地,质量均匀的三角形重心: X = ( x0 + x1 + x2 ) / 3 Y = ( y0 + y1 + y2 ) / 33,质量分布不均匀。只能用 阅读全文
posted @ 2011-08-16 18:25 wutaoKeen 阅读(673) 评论(1) 推荐(0) 编辑
摘要: 算法简单说明: 首先判断以两条线段为对角线的矩形是否相交,如果不相交两条线段肯定也不相交。(所谓以a1b2为对角钱的矩形就是以两边长为|a1.x – b2.x|和|a1.y – b2.y|以及a1b2为对角线的矩形)。如果相交的话,利用矢量叉乘判断两条线段是否相互跨越,如果相互跨越显然就相交,反之则不相交。算法不难,但是一些特殊情况需要考虑到,比如两条相段共线且在断点处相交。下面的代码经过测试了,应该没有bug,如果你真的发现了bug请告诉我:) /******************************************************** * * * 返回(P1-P0)* 阅读全文
posted @ 2011-08-16 16:55 wutaoKeen 阅读(196) 评论(0) 推荐(0) 编辑
摘要: x 、y、n都是正整数,并且 显然,x >= n , y >= n ,现在假设 y = n +k (k为正整数) ,那么带入公式,可以得出 x = (n*(n+k))/k = n*n/k + n; 由于x 是正整数,现在的关键问题就是要求出 n*n/ k 有多少组正整数的可能,显然,所要求的就是 n*n 因子的个数// 问题已经非常接近答案了,但是最后还有一个问题,n<= 10^9 , 那么n*n <= 10^18 ,对于一个这么大的数字怎样才能求出它因子的个数呢?命题1: 一个正整数 n 可以用素因子唯一表示为 p1^r1 * p2^r2 * ... pk^rk (其 阅读全文
posted @ 2011-08-16 11:29 wutaoKeen 阅读(383) 评论(0) 推荐(0) 编辑