摘要: /* * zoj3175.c * * Created on: 2011-9-20 * Author: bjfuwangzhu *//* 题目描述:给定一个n,求1,2。。。n所有数的约数个数和f(n) 例如f(5)=10-5,f(4)=8-4 由于这个n非常大,故有两种思考方向,第一种是找该函数的递推或者公式,貌似很难而且每有头绪 还有种思考的方式就是我们按段来统计,就是统计区间上有多少个数含有这个约数,我们是可以O(1)时间计算的 接下来就是如何分这个段,其实这个问题反映到坐标系中就是对于x*y<=n,我们要找在这个图形中所有的正整数点 我们用直线x=y把这个图形分成两部分,显然... 阅读全文
posted @ 2011-09-20 19:38 qingyezhu 阅读(448) 评论(0) 推荐(0)
摘要: #include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#define nmax 100000int prime[nmax], flag[nmax], factor[nmax], cfactor[nmax], divisor[nmax];int plen, flen, dlen;void init() { memset(flag, -1, sizeof(flag)); int i, j; for (i = 2, plen = 0; i < nmax; i++) 阅读全文
posted @ 2011-09-20 18:07 qingyezhu 阅读(313) 评论(0) 推荐(0)
摘要: /* * hdu3792.c * * Created on: 2011-9-19 * Author: bjfuwangzhu */#include<stdio.h>#include<string.h>#define nmax 100200int prime[nmax], flag[nmax];int plen, nlen;typedef struct node { int i, value;} node;node Node[nmax];void init() { memset(flag, -1, sizeof(flag)); int i, j; for (i... 阅读全文
posted @ 2011-09-19 17:58 qingyezhu 阅读(171) 评论(0) 推荐(0)
摘要: 转载于:http://hi.baidu.com/ericxieforever/blog/item/3b313d11ba95c4d0a6ef3f1a.html大家都在中学阶段学习了组合数的定义:这个表示的是从n个元素中选取m个元素的方案数。(PS.组合数求模似乎只用在信息学竞赛和 ACM竞赛等计算机编程设计大赛中……,求在现实中的运用)可以知道当n,m取得比较大的时候,组合数可能很大很大 (天文数字?无法度量?)例如 C(100, 50) = 100891344545564193334812497256,于是计算机的 64位整数型已经没法阻止它了!C(1000000000, 500000000) 阅读全文
posted @ 2011-09-19 16:08 qingyezhu 阅读(302) 评论(0) 推荐(0)
摘要: 思路:由于N<=10000 ,所以我们不可能吧集合C中的元素全部算出来O(n^2),显然不行,这样的话,你还没求出集合C就已经TLE,根本没时间求第k大的值。所以我们要换种角度,题目要求我们求集合c中第k大的数(用num_k表示),我们只要找出集合C中<=num_k的元素个数为m=n^2-k+1个即可。这样我们先对A集合与B集合元素进行排序,先锁定集合C中元素的范围,在这个范围里面进行二分,再在这个二分里嵌套二分求<=当前num_k的元素的个数less_num。无限的去逼近num_k。/* * hrbeu1211.c * * Created on: 2011-9-19 * A 阅读全文
posted @ 2011-09-19 13:34 qingyezhu 阅读(192) 评论(0) 推荐(0)
摘要: 转载于:http://blog.csdn.net/xieshimao/article/details/6425099断断续续的学习数论已经有一段时间了,学得也很杂,现在进行一些简单的回顾和总结。学过的东西不能忘啊。。。1、本原勾股数:概念:一个三元组(a,b,c),其中a,b,c没有公因数而且满足:a^2+b^2=c^2首先,这种本原勾股数的个数是无限的,而且构造的条件满足:a=s*t,b=(s^2-t^2)/2,c=(s^2+t^2)/2其中s>t>=1是任意没有公因数的奇数!由以上概念就可以导出任意一个本原勾股数组。2、素数计数(素数定理)令π(x)为1到x中素数的个数19世纪 阅读全文
posted @ 2011-09-19 09:22 qingyezhu 阅读(307) 评论(0) 推荐(0)
摘要: 整数划分 --- 一个老生长谈的问题: 1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3. 将n划分成最大数不超过k的划分数。 4. 将n划分成若干奇正整数之和的划分数。 5. 将n划分成若干不同整数之和的划分数。1.将n划分成不大于m的划分法: 1).若是划分多个整数可以存在相同的: dp[n][m]= dp[n][m-1]+ dp[n-m][m]dp[n][m]表示整数 n 的划分中,每个数不大于 m 的划分数。 ... 阅读全文
posted @ 2011-09-12 20:58 qingyezhu 阅读(8289) 评论(6) 推荐(3)
摘要: 在网友的提示之下,我终于AC了!唉,好惨呀!比赛快结束时,才有了一丁点的想法!唉!贴个代码,请指教!!尽量多的3。对于负数,当有偶数个负数时,不必管它,若有奇数个负数,则将最大的负数尽量变为0,接着是使所有的0变为1,接着使所有的1变为2,接着使所有的2变为3。最后将剩余的M变为3的X次方,此时M=M%3。若M=2,则要添加一个2,若是1,则要将正数中的最小数增加1,之后求积即可!/* * hdu4038.c * * Created on: 2011-9-11 * Author: bjfuwangzhu */#include<stdio.h>#include<string.h 阅读全文
posted @ 2011-09-11 20:54 qingyezhu 阅读(484) 评论(0) 推荐(0)
摘要: 题目思路:求解10^x = 1 (mod 9*L/gcd(L,8))的满足x>0的最小解就是答案由8构成的数A设有x位那么A=8(10^0+10^1+...+10^(x-1));很容易得到A=(8/9)*(10^x-1);题目的要求就是A=0(mod L)就是(8/9)*(10^x-1)=0(mod L);->8*(10^x-1)=0(mod 9L);->10^x-1=0(mod 9L/gcd(L,8));->10^x =1 (mod 9L/gcd(L,8));令p=9*L/gcd(L,i), 等价于10^x==1(mod p),求满足条件的最小的整数x看到这个式子,我 阅读全文
posted @ 2011-09-09 19:21 qingyezhu 阅读(423) 评论(0) 推荐(0)
摘要: /* * hdu1541.c * * Created on: 2011-9-7 * Author: bjfuwangzhu */#include<stdio.h>#include<string.h>#define nmax 32002#define nnum 15002int flag[nmax], count[nmax];typedef struct point { int x, y;} point;point Point[nnum];int lowbit(int x) { return x & (-x);}void modify(int pos) { whi 阅读全文
posted @ 2011-09-07 10:01 qingyezhu 阅读(306) 评论(0) 推荐(0)