摘要:
题意:求[L,U]区间内相差最大和最小的两对素数.(1<=L<U<=2,147,483,647,U-L<=1000000)分析:先筛出sqrt(maxlongint)范围内的素数,再用这些素数去筛L~U范围内的素数.code:const MAXNUM=50000; MAXN=1000001; MAXM=200000; oo=1000000000;var Prime:array[0..MAXNUM] of longint; P:array[0..MAXNUM] of boolean; d:array[0..MAXN] of boolean; px:array[0..MAX 阅读全文
摘要:
题意:Given an integer N(1<N<2^31),you are to calculate ∑gcd(i, N) 1<=i<=N.分析:数论题的魅力就在于此,一道题就一句简单的描述.显然,最后的答案肯定是由N的约数组成的,于是我们试着统计每个约数被用了几次.对于N的一个约数D,有多少个数与N的gcd是D呢?答案是φ(N/D).于是ans=∑φ(N/D)*D==∑φ(D)*(N/D). (D为N的约数)效率为O(sqrt(N)).code:var p,cnt:array[0..15] of longint; n,m,num,i:longint; tmp,an 阅读全文
摘要:
题意:求两段不相交的连续子序列的和的最大值.如下:水题,以前刚学线段树的时候写的,想到可以用线段树,一激动写了NlogN的.其实可以O(N)的.code(600多MS,勿看):type node=record l,r,num:longint;end;const oo=600000000; maxn=51000;var f1,f2,a:array[0..51000] of longint; t:array[0..maxn*5] of node; datanum,d,n,s,ans,i,max1,max2:longint; function max(a,b:longint):longint; be 阅读全文