数论做自闭了。。。
1、n!末尾有多少0,看包含多少个5就行。然后对5的i次方分层,累加每一层5的个数。
2、n的因数个数为 分解质数之后(每个质数的幂数+1)的积。不要忘了可能是一个大质数。如果求因数对,则直接除2就可以了。
3、求1~n内有多少个数的因数和为偶数,打表发现答案为n-sqrt(n)-sqrt(n/2)
4、求n的k次方在10进制下的前y位数:
a=(double)k*log10(n);
a-=floor(a);
a=pow(10,a);
ans=a*power(10,y-1);
5、求i从1到n n/i向下取整的和:除法分块。
有结论:1到n的所有数的因数的和等于n/i向下取整*i的和,同样除法分块。
6、n能分解的x的p次方形式的最大的p:正数为分解质数之后(每个质数的个数)的gcd。负数若为偶数答案同整数,否则一直除2直到变成奇数。
7、结论:m重for循环每次循环i1,i2,...,im 从 1~n加对应下标的数组的和mod k,答案为sum*m%k*power(n,m-1,k)%k;
8、求区间[a,b](b-a<=1e5,a,b<=1e14)内的素数个数:筛1~sqrt(b)的素数,每个i去掉[a,b]中i的倍数。
9、注意long long 和unsigned long long。
10、斯特林公式:求n在m进制下的位数:
double e=exp(1);
ans=0.5*log10(2.0*pi*n)/log10(m)+n*log10(n/e)/log10(m)+1;
11、线段(a,b)_(c,d)上的整点个数:gcd(c-a,d-b)。