随笔分类 - 数论
摘要:#include
__int64 gcd(__int64 a,__int64 b)
{ return b==0?a:gcd(b,a%b); }
int main()
{ int i,j,prime[]={2,3,5,7,11,13,17,19},n,t; __int64 s1,s2,m,d,gd; while(scanf("%d",&n)==1) { s2=1;s1=0;t=0; if(n==21 || n==22) { for(i=2;id) {
...
阅读全文
摘要:作者 : AekdyCoin转自http://hi.baidu.com/aekdycoin/item/e493adc9a7c0870bad092fd9曾经看过如下一个公式:以上的公式如果第一次见到,难免有不少疑惑:为什么可以这么写?限制条件为什么是x >= Phi(C),这个公式为什么正确?今天突发奇想,在纸上YY以后得到了以下证明(个人证明,如果有问题欢迎提出)定理 1:对于一个数对(A,C) 必然存在一个最小的正整数 L,满足其中SPOS 是一个大于等于0的整数(下面具体介绍)我们称L 为(A,C) 的最小循环节长度证明:根据鸽巢原理,得到在x >= C 后必然出现循环,从而定
阅读全文
摘要:斯特灵公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用,而且,即使在n很小的时候,斯特灵公式的取值已经十分准确。公式为:以下等式或者不等式均可以用数学归纳法予以证明!1 + 3 + 5 + ... + (2n - 1) = n^21*2 + 2*3 + 3*4 + ... + n*(n + 1) = n*(n + 1)*(n + 2) / 31*1! + 2*2! + 3*3! + ... + n*n! = (n + 1)! - 11^2 + 2^2 + 3^2 + ... + n^2 = n*(n + 1)*(2n + 1) /
阅读全文
摘要://Time 297ms, Memory 640K#include
using namespace std;
int n,m;
int money[100010];
int judge(int mid)
{ int i,s=0,group=1; for(i=0;im) return 0; } return 1;
}
int main()
{ int i,max,min,mid; while(cin>>n>>m) { max=min=0; for(i=0;i>money[i]; max+=money[i]; if(min<money[i]) min=mo...
阅读全文
摘要:// Time 16ms, Memory 328K#include using namespace std; const int size=10000; const int mod=9901; __int64 sum(__int64 p,__int64 n); //递归二分求 (1 + p + p^2 + p^3 +...+ p^n)%mod __int64 power(__int64 p,__int64 n); //反复平方法求 (p^n)%mod int main(void) { int A,B; int p[siz...
阅读全文
摘要://Time 907ms, Memory 4480K#include
#include
using namespace std;
int vis[1000010],prime[80000];
int main()
{ int i,j,k=0,l,a[35],t; char s[105]; memset(vis,0,sizeof(vis)); memset(s,0,sizeof(s)); for(i=2;i*i>s>>l && ((strlen(s)!=1 || s[0]!='0') || l)) { j=0;i=strlen(s); for(i
阅读全文
摘要:GCD最大公约数int gcd(int x,int y)
{ if(!x || !y) return x>y?x:y; for(int t;t=x%y;x=y,y=t); return y;
}快速GCDint kgcd(int a,int b)
{ if(a==0) return b; if(b==0) return a; if(!(a & 1) && !(b & 1)) return kgcd(a>>1,b>>1)>1); else if(!(a & 1)) return kgcd(a>>1,b); e
阅读全文
摘要:递推求欧拉函数phi(i):for(i=1;i1) res=res/x*(x-1); return res;
}
阅读全文