摘要: 利用积性函数的优化.这个文章主要介绍了3算法1线性时间筛素数2线性时间求前n个数的欧拉函数值3线性时间求前n个数的约数个数一、首先介绍下积性函数。下面是wiki的条目:在非数论的领域,积性函数指有对于任何a,b都有性质f(ab)=f(a)f(b)的函数。在数论中的积性函数。对于正整数n的一个算术函数f(n),当中f(1)=1且当a,b互质,f(ab)=f(a)f(b),在数论上就称它为积性函数。若某算术函数f(n)符合f(1)=1,且就算a,b不互质,f(ab)=f(a)f(b),称它为完全积性的。例子φ(n)-欧拉φ函数,计算与n互质的正整数之数目μ(n)-默比乌斯函数,关于非平方数的质因子 阅读全文
posted @ 2011-05-10 21:07 Ac_smile 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 假若相遇,则存在 x+ms≡y+ns(mod l)=>(x+ms)-(y+ns)=kl;=>x-y-(n-m)s=kl;(已知x,y,n,m,l)=>kl+(n-m)s=x-y;即求满足 kl+bs=a(已知 l,b,a)最小的s;——————————扩展欧几里德算法-求解不定方程,线性同余方程:解不定方程ax + by = n的步骤如下:(1)计算gcd(a, b). 若gcd(a, b)不能整除n,则方程无整数解;否则,在方程的两边同除以gcd(a, b), 得到新的不定方程a'x + b'y = n',此时gcd(a', b') 阅读全文
posted @ 2011-05-10 20:06 Ac_smile 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 求N个同余方程,用扩展欧几里得。扩展欧几里得算法是用来在已知a,b的情况下求解一组x,y 使得 ax+by = gcd(a,b)原理:gcd(a,b) = gcd(b, a%b)=> ax+by = gcd(a,b) = gcd(b, a%b);=>ax+by=bx+(a%b)y;=>ax+by=bx1+(a-(a/b)*b)y1=ay1+bx1-(a/b)*by1;=>x=y1;y=x1-(a/b)*y1;#include"iostream"using namespace std;__int64 egcd(__int64 a,__int64 b,_ 阅读全文
posted @ 2011-05-10 16:09 Ac_smile 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 典型的中国余数定理的应用。设m1,m2,..,mk是k个两两互素的正整数,m=m1*m2*...*mk,Mi=m/mi(i=1,2,..,k)。则同余方程组x≡b1(mod m1)x≡b2(mod m2)......x≡bk(mod mk)有唯一解。x≡M'1M1b1+…+M'kMkbk (modm),其中M'iMi≡1 (modmi),i=1,2,…,k举个最经典的例子,今有物不知其数,三三数之余二 ,五五数之余三 ,七七数之余二,问物几何?除数序列{3,5,7};对应的余数序列{2,3,2}接下来我们需要求一个数k1满足k1 %3==1&&k1%5= 阅读全文
posted @ 2011-05-10 14:20 Ac_smile 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 如果n/m>1的话就Stan wins否则就球gcd,看经过多少次可以出现m==0的情况。注意的是在求gcd的过程中会出现n/m>1的情况,#include"iostream"using namespace std;int gcd(int n,int m){ int i=0; while(1) { if(n/m>1) break; i++; n-=m; if(n<m) {int tmp=m;m=n;n=tmp;} if(m==0) break; } return i;}int main(){ int n,m; while(cin>>n&g 阅读全文
posted @ 2011-05-10 13:12 Ac_smile 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 简单的NIM游戏过程,就不分析了。#include"iostream"using namespace std;int main(){ int n; while(cin>>n) { int i,k,ans=0; for(i=0;i<n;i++) { cin>>k; ans^=k; } if(ans) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0;} 阅读全文
posted @ 2011-05-10 12:26 Ac_smile 阅读(237) 评论(0) 推荐(0) 编辑
摘要: Alice and Bob decide to play a new stone game.At the beginning of the game they pick n(1<=n<=10) piles of stones in a line. Alice and Bob move the stones in turn.At each step of the game,the player choose a pile,remove at least one stones,then freely move stones from this pile to any other pil 阅读全文
posted @ 2011-05-10 12:18 Ac_smile 阅读(231) 评论(0) 推荐(0) 编辑