2011年7月12日

sicily 1085. Longge's problem

摘要: /*设F(N)=∑gcd(i,N),1<=i<=N性质:F[P^k]=k×(P^k-P^(k-1))+P^k,P为质数(详细的证明放在后面)且F(N)是积性函数,即当GCD(M,N)=1时,有F[M×N]=F[M]×F[N],又因为一个正整数总可以表示成素数(它的质因子)的乘积:N=p1^k1*p2^k2*...*pn^kn(这里p1,p2,..pn是素数,当然相互之间是互质的)所以F(N)=F[p1^k1]*F[p2^k2]*...*F[pn^kn]=(k1×(p1^k1-p1^(k1-1))+p1^k1)*(k2×(p2^k2- 阅读全文

posted @ 2011-07-12 21:28 sysu_mjc 阅读(198) 评论(0) 推荐(0) 编辑

sicily 1088. Cows

摘要: #include<iostream>//树状数组#include<stdio.h>#include<algorithm>#include<cstring>usingnamespacestd;constintmaxn=100005;inttable[maxn],num[maxn],repeat[maxn],n,i;structCow{intst,ed;intpos;booloperator<(constCow&c)const//ed按降序排,若相同则按st升序排;用一维的树状数组table[]来处理。{if(ed==c.ed)retu 阅读全文

posted @ 2011-07-12 17:32 sysu_mjc 阅读(251) 评论(0) 推荐(0) 编辑

sicily 1089. Farey Sequence

摘要: #include <iostream> //欧拉函数, 给定n,求φ(1)到φ(n)的和using namespace std;const int max_n=1000000;long long phi[max_n+2],sum[max_n+2]; //这里数组空间起码要稍微大于max_nvoid phi_table() //欧拉函数表{ for(int i=2;i<=max_n;++i) phi[i]=0; phi[1]=1; for(int i=2;i<=max_n;++i) if(!phi[i]) ... 阅读全文

posted @ 2011-07-12 17:07 sysu_mjc 阅读(167) 评论(0) 推荐(0) 编辑

sicily 1090. Highways

摘要: // 题意:找出最小生成树的最大边#include<iostream> //最小生成树Prim算法using namespace std;struct MST //最小生成树的边{ int st,ed,w;}mst[1000];int n,edge[1000][1000];int ans; //ans保存最小生成树的最长边void Prim(){ int i,j,k; for(i=0;i<n-1;i++) //默认选择节点0加入生成树 { mst[i].st=0;mst[i].ed=i+1; mst[i... 阅读全文

posted @ 2011-07-12 16:33 sysu_mjc 阅读(304) 评论(0) 推荐(0) 编辑

sicily 1077. Cash Machine

摘要: #include<iostream> //多重背包#include<cstring>using namespace std;int cash,n,num[20],d[20],dp[100010];int main(){ while(cin>>cash>>n) { for(int i=0;i<n;++i) cin>>num[i]>>d[i]; if(cash==0||n==0) { cout<<"0\n"; continue; } memset(dp,0,sizeof(dp)); dp[ 阅读全文

posted @ 2011-07-12 11:36 sysu_mjc 阅读(197) 评论(0) 推荐(0) 编辑

sicily 1070. Hansel and Grethel

摘要: #include<iostream> //求两直线交点#include<stdio.h>#include<cmath>using namespace std;#define pi acos(-1.0)int main(){ int cases; double x1,y1,d1,x2,y2,d2,k1,k2,x,y; cin>>cases; while(cases--) { cin>>x1>>y1>>d1>>x2>>y2>>d2; //直线 y=kx+b k1=tan((450 阅读全文

posted @ 2011-07-12 11:18 sysu_mjc 阅读(236) 评论(0) 推荐(0) 编辑

sicily 1199. GCD

摘要: /*题意: 给定n和m, 求有多少x(m<=x<=n),满足 gcd(x,n)>=m. 可以利用欧拉函数来解答. 令 y = gcd ( x , n ),其中 y>=m ,则有 gcd(x/y,n/y)=1 .于是对于特定的y,我们想求有多少 x 满足 gcd(x,n)=y, 只要求出有多少 x/y 小于 n/y 且与 n/y 互质——这正是欧拉函数的定义:φ(a) 表示小于a且和a互质的正整数的个数思路: 先求出 n 大于等于 m 的因子 y ,再计算 n/y 的欧拉函数,最后相加即可*/#include<iostream> #include <ma 阅读全文

posted @ 2011-07-12 01:00 sysu_mjc 阅读(273) 评论(0) 推荐(0) 编辑

导航