摘要: 素数筛选法一直是数论中的重点,你找到的规律越多你的筛选就越快。先让我们 看一个算法:#include<stdio.h>#include<math.h>#define MAX_P 500int nList[MAX_P] = {0};void Calc(){ int n,p,t,sq=(int)sqrt(MAX_P*2+1); for (n=3;n<=sq;n+=2) { if (nList[n>>1]) continue; for (t=n*n;t<=MAX_P<<1;t+=n<<1) //筛选循环 nList[t>& 阅读全文
posted @ 2011-08-02 17:48 wutaoKeen 阅读(2676) 评论(0) 推荐(0)
摘要: Description我们知道,任何一个大于1的数,都可以写成多个素数的乘积,我们把这些素数叫做这个数的素因子。Input第一行为测试数据的组数N,以下N行,每行一个数字k(1<k<2^24)Output输出N行,每行两个数字,一个是k的最大素因子,第二个是k的素因子的个数。Sample Input3 10 25 120Sample Output52 5 1 5 3代码:#include<stdio.h>#include<stdlib.h>#include<math.h>bool a[2100]={0};int num[600];int main 阅读全文
posted @ 2011-08-02 12:30 wutaoKeen 阅读(3576) 评论(0) 推荐(0)
摘要: 这个题是一个几何题,主要考虑精度问题,为了减少精度的损失,尽量少用除法,该题如果先算出斜率k,那么后面就会精度损失;该题最好用向量解比较好;该题要注意两直线垂直的情况;poj上面的测试数据太弱了;#include<stdio.h>#include<stdlib.h>int main( ){ double A1,B1,A2,B2,X1,Y1,X2,Y2; double PX,PY,QX,QY; int n; scanf("%d",&n); printf("INTERSECTING LINES OUTPUT\n"); for( 阅读全文
posted @ 2011-08-02 12:17 wutaoKeen 阅读(303) 评论(0) 推荐(0)
摘要: 该题我也WA了几次,后来才知道该题用了错排的知识,在看代码之前,我们先证明一下错排。有个牵手游戏规则如下:有标号 1.的女生与标号1,2,3,4......n-1,n.的男生.我们规定标号相同的男生与女生不能牵手。同时规定错排个数为M(1),M(2),M(3)。。。M(n-1),M(n),我们假设1号女生先开始牵手,那么有n-1种选法,我们假设2号女生牵手1和不牵1男生手的两种情况,假设2一定牵手1,那么还有编号3,4......n-1,n的男女生,则有(n-1)*M(n-2)种情况;另一种情况2一定不牵1的手,那么1号男生就等价于2号男生因为1号男生一定不能牵2号女生的手,相当于还有编号2, 阅读全文
posted @ 2011-08-02 10:12 wutaoKeen 阅读(3691) 评论(1) 推荐(1)