
数论
Wss0130
这个作者很懒,什么都没留下…
展开
-
HDU 1164 素数
很简单的一题,就是判断一下素数的问题。。。#include#includeint prime(int n){ // 1 代表是素数;0 代表不是素数 int i,flag; if(n==1 || n==2) return 1; else{ flag=0; for(i=2;i if(n%i==0){ fla原创 2012-08-18 15:13:45 · 603 阅读 · 0 评论 -
HDU 2114 Calculate S(n)
立方和公式:s(n)=(n*(n+1)/2)^2;及 ( a * b ) % m = ( ( a % m ) * ( b % m ) ) % m#include int main() { long long n; while(scanf("%I64d",&n)!=EOF) { n=((n*n%40000)*((n原创 2012-09-04 20:24:26 · 1460 阅读 · 0 评论 -
数论之因子的个数
1. N的因子个数 条件:给定任意一个一个正整数N要求:求其因子的个数首先给出结论:对于任意的整型N,分解质因数得到N= P1^x1 * P2^x2* …… * Pn^xn;则N的因子个数M为 M=(x1+1) * (x2+1) * …… *(xn+1); 证明过程: 首先 举个例子吧24 = 2^3 * 3^1;其质因子有:为2和3 指数为 3和1转载 2012-08-18 18:14:05 · 686 阅读 · 1 评论 -
HDU 1286 新朋友
还是使用筛选法。。。不然TLE#include#includeint x[32768];int main(){ int i,t,j,n,sum; while(scanf("%d",&t)!=EOF) { while(t--){ scanf("%d",&n); sum=0; memset(x,0,sizeo原创 2012-08-18 17:54:50 · 523 阅读 · 0 评论 -
数论中的基础知识
对于任意整数分解质因数得到:N=P1^x1* P2^x2 *……*Pn*xn; 1. 欧拉函数 通式:M(N)=M*(1-1/p1) *(1-1/p2)*……*(1-1/pn) 性质:a. 若N是质数p的k次幂,则M(N)= p^k-p^(k-1)=(p-1)p^(k-1)=n-n/p;b. 若是奇数,则M(N)=M(2*N);c. 若x,y互质转载 2012-08-18 18:13:10 · 555 阅读 · 0 评论 -
HDU 1299 求因子个数
现在假设 y = n +k (k为正整数) ,那么带入公式,可以得出 x = (n*(n+k))/k = n*n/k + n; 由于x 是正整数,现在的关键问题就是要求出 n*n/ k 有多少组正整数的可能,显然,所要求的就是 n*n 因子的个数整数分解: 任何一个正整数都可以表示成素数的x次方之积,所以本题就被转化成了求n ^2的素因子个数; 先把n分解得到 n = p1原创 2012-08-18 18:04:45 · 513 阅读 · 0 评论 -
HDU 1222 欧几里德公式扩展
需要判断狼是否可以到达每一个洞,由此可以得出这样的式子/设洞的位置为n,总的洞数量为m,狼查找的间隔为k;a,b为任意正整数(n+a*m)=b*kn=b*k-a*m这样问题就转化为用欧几里德扩展定理可以求解的问题了,即求解是否存在这样的a,b是上式成立,但是这样就需要求许多次,遍历m次,由欧几里德扩展定理可知等号前的数一定要符合是k,m的最大公约数的倍数,也就是说如果求出k原创 2012-08-18 16:47:33 · 1133 阅读 · 0 评论 -
HDU 1215 七夕节(筛选法)
刚开始以为很简单,就用一般的方法提交,结果TLE。。。百度了一下,原来要用筛选法做,因为数据太大了。。。筛选法真的很好用哦!#includeint x[500000];int main(){ int temp,n,i,j,t; for(i=0;i x[0]=0; x[1]=0; for(i=2;i for(j=i+i;j x[j]+=i;原创 2012-08-18 16:25:29 · 580 阅读 · 0 评论 -
HDU 1211 求逆元
根据题意,一步步的求就可以了。主要是知道逆元的求法 #includeint main(){ int i,j,p,q,e,l,m,n,c,d,fn; while(scanf("%d%d%d%d",&p,&q,&e,&l)!=EOF) { n=p*q; fn=(p-1)*(q-1); d=fn/e+1; while(1){ // 求原创 2012-08-18 15:38:27 · 447 阅读 · 0 评论 -
ZOJ 1095 Humble Numbers
参考别人的,就是输出第n个丑数。。。要先打表,丑数:2、3、5、7的乘积#include #define MAX 2000000000long long a[5842];int cmp(const void * x, const void *y){ if( *(int*)x > *(int*)y ) return 1; else return -1;原创 2012-09-08 13:19:35 · 502 阅读 · 0 评论