
ACM——之路
南山小翁
活在当下,要有思想,每个人不是随随便便就能成功!
展开
-
poj 2262 打表
#include#include#include#define max 1000010int num[max];void if_prime(int n){ int i,j,m; m=(int)sqrt(n*1.0); for(i=2;im;i++) for(j=i*i;jn;j+=i) num[j]=1;}int main(){原创 2012-09-14 14:04:33 · 523 阅读 · 0 评论 -
挺好滴
所属题型:组合数学要求知识:polya或者burnside题意转述:一串由n个珠子组成的项链,用c种颜色涂染,问能形成多少种不同项链。限制:旋转得来的为同一种,翻转得来的也为同一种。本题有多种算法,下面给出比较容易想到且易于理解的两种算法。推荐使用算法2,因为若是碰到高精度问题,算法2比算法1易于处理,且复杂度也比算法1低好多。核心知识点都是Polya定理。解决过程:算转载 2012-10-26 08:43:20 · 400 阅读 · 0 评论 -
zoj3609
//求一个最小的正整数x,使a乘以x对m的取余等于1对m的取余//注意的是 当b==1的时候 要特殊的判断一下。#includeint ext_gcd(int &x,int &y,int a,int b){ int d; if(b==0) { x=1; y=0; return a; }原创 2012-11-25 14:42:08 · 851 阅读 · 0 评论 -
hdu 1395 2^x mod n = 1给定n值 求x
//用数学公式 为什么超时? 感觉不爽啊//思路:2^? mod n = 1//2^?一定为偶数 所以如果n为偶数时,一定没有解 相反的是 如果n为奇数的话 一定有解/*2^k%n=(2^a*2^b)%n=((2^a%n)*(2^b%n))%n,(a+b)=k;求lnx为log(x)求log 10 x是log10(x)没有专门的求任意底数对数的函数,不过可以原创 2012-12-06 20:32:19 · 578 阅读 · 0 评论 -
poj 2115
// 题意:for (variable = A; variable != B; variable += C)//给你一个for循环,问当循环几次时,可以跳出循环,输出循环次数//否则,如果出现死循环,这输出FOREVER//因此 我们可以得到 当在有限的循环中: ((B-A)+2^k)%2^k/C==x(x代表循环的次数)//公式转化: ((B-A)+2^k)%2^k==C*X;=》C*X原创 2012-12-07 09:08:25 · 384 阅读 · 0 评论 -
hdu 2669 http://acm.hdu.edu.cn/showproblem.php?pid=2669
//a*x+b*y=1; 求解x和y值//注意:x为最小值。#include#include__int64 gcd(__int64 a,__int64 b){ if(b==0) return a; return gcd(b,a%b);}__int64 ext_Euclid(__int64 a,__int64 b,__int64 &x,__int64 &y)原创 2012-12-07 18:27:34 · 691 阅读 · 0 评论 -
hdu1163 树根
/*数字根:一个数的数字根为该数字除以9的余数,两个数字根为两数的数字根之和除以9的余数;如果把一个大数的各位数字相加得到一个和,再把这个和的各位数字相加又得一个和,再继续作数字和,直到最后的数字和是个位数为止,这最后的数称为最初那个数的“数字根”。这个数字根等于原数除以9的余数,因此这个计算过程常常称为“合九法”。计算方法是:这个数字根等于原数除以9的余数,因此这个计算过程常原创 2012-12-07 17:04:43 · 486 阅读 · 0 评论 -
poj2142
//1.ax+by=gcd(a,b)利用这个公式可以得到一个不等式的一组解 x.y.利用扩展欧几里得算法 可以求出://ax+by==a*y1+b*(x1-(a/b)*y1):上一深度的x等于下一深度的y1,上一深度的y等于下一深度的x1-(a/b)*y1//2.然而对于一般的不等式ax+by==c。它的解就是 x1=x*(c/gcd(a,b)) y1=y*(c/gcd(a,b));//3.原创 2012-11-25 12:44:26 · 1063 阅读 · 0 评论 -
C - Line
DescriptionA line on the plane is described by an equation Ax + By + C = 0. You are to find any point on this line, whose coordinates are integer numbers from - 5· 1018 to 5· 1018 inclusive, or原创 2012-12-11 09:11:05 · 1147 阅读 · 0 评论 -
poj1019 很好的一道数学题 思路挺巧
借鉴别人的思路,利用位数求解:思路不错。题意:求第n位的数字。函数log10((double)i)+1,求的是一个数的位数。当达到31270时,已经超过了2147483647位数#include#include#include#define max 31270using namespace std;unsigned int a[max];unsigned int s[max];原创 2013-01-29 19:40:34 · 3844 阅读 · 0 评论 -
poj2409 http://poj.org/problem?id=2409
基础的polya题目:建议看一下博客http://blog.youkuaiyun.com/shiren_Bod/article/details/5664934//#includeint gcd (int a, int b){ return b? gcd(b,a%b) : a;}__int64 Polya(int c,int s){ int k; __int原创 2012-10-26 08:46:28 · 620 阅读 · 0 评论 -
poj 3090 http://write.blog.youkuaiyun.com/postedit
//嘿嘿....做数论的题目现在有点感觉了。//把学到的内容举一反三 然后 在宽展一部分 你一定会提高//题意:给你一个n*n的点阵 你站在(0 0)点的位置 问 你能看到几个点 //思路:图对称 所以求出一半乘以2然后加上中间的点即可。#include#include#include#define max 1010int is_prime[max];int E原创 2012-10-18 19:55:53 · 672 阅读 · 0 评论 -
poj 2478http://poj.org/problem?id=2478
做题一定程度不在多 关键是做一道题 把所联系的知识点融合在一块 感觉这是最大的进步 //注意精度问题。 #include#include#include#define max 1000010int is_prime[max];int Euler_num[max];void if_prime(){ memset(is_prime,0,sizeof(is_prime));原创 2012-10-18 16:38:05 · 835 阅读 · 3 评论 -
poj1061
// 由题意可得:求解公式//1.(x+k*m)-(y+k*n)=h*L(k,h=0,1,2,3....)//2. 得:(n-m)*k+L*h=x-y;//3.求解线性方程:扩展欧几里得//4.令n-m=a;b=L;c=x-y;即:a*k+b*h=c;//5.线性方程有解得条件是:c%gcd(a,b)==0;//6.求解方程,扩展欧几里得a*x1+b*y1=b*x2+(a原创 2012-09-15 09:51:44 · 360 阅读 · 0 评论 -
poj1730
//刚开始忘了考虑 testNum的正负号问题(负数的哪有次方啊),#include#include#define minNum 1e-12int main(){ long long testNum; int step; double ans,minTestNum,maxTestNum; while(scanf("%lld",&testN原创 2012-09-14 16:22:39 · 475 阅读 · 1 评论 -
poj1152
//数学进制问题 读懂题目意思 注意一下细节就可以。#include#include#define max 35000char num[max];int main(){ int step; int addNum; int sumNum; int minNum; int theMaxCarry; int lenNum原创 2012-09-14 19:44:24 · 609 阅读 · 0 评论 -
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=35&page=show_problem&p
//需要一定的数学知识://这个题目就是让求 最后一个数的因子的个数是奇数还是偶数//如果为偶数那么yes 否则 no//当一个数为某个数的平方时,则它的因子个数为奇数//相反当一个数不为某个数的平方时,它的因子个数为偶数。\#include#includeint main(){ unsigned int n; while(scanf("%d"原创 2012-10-11 16:07:31 · 3786 阅读 · 0 评论 -
uva10006 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=35&page=show
//题目 判断一个数n://1.是合数//2.满足a^n mod n=a。//方法://利用素数打表求出max之内的所有素数//然后利用二分思想快速幂取模运算//可以尝试一下打表做 将max内的满足的数全部找出来。#include#include#include#define max 65010int Prim[max];void if_prim(原创 2012-10-11 18:12:05 · 2678 阅读 · 0 评论 -
uva10104
//今天又学了好多东西,呵呵//已知A,B//求X,Y使得AX+BY=gcd(A,B)//使|X|+|Y|最小//用扩展欧几里得:#includeint extend_gcd(int a,int b,int &x,int &y){ if(b==0) { x=1;y=0; return a; } int ans=exte原创 2012-10-11 19:52:00 · 722 阅读 · 0 评论 -
uva10168 将一个数分成四个质数和的形式
这道题目中 把Impossible中的.给忘了 悲催//将一个数写成四个素数和的形式://思路://根据判断一个数是否可以写成两个质数的和的形式 的思路去解决。//当一个数小于8时,Impossible,因为8为2+2+2+2最小的四个数的和。//根据歌德巴赫猜想 一个偶数(本题是大于8)可以分成两个质数的和的形//即:当数n为偶数时 满足条件。//当n为奇数时 加1原创 2012-10-13 15:03:45 · 1492 阅读 · 0 评论 -
POJ 数论列表
POJ 数论列表博弈论POJ 2234 Matches GamePOJ 2975 NimPOJ 2505 A multiplication gamePOJ 1067 取石子游戏POJ 2484 A Funny GamePOJ 2425 A Chess GamePOJ 2960 S-NimPOJ 1704 Georgia and BobPOJ 1740转载 2012-10-14 15:38:03 · 722 阅读 · 1 评论 -
poj2407简单题目 http://poj.org/problem?id=2407
//http://baike.baidu.com/view/107769.htm 欧拉函数介绍://题意:求小于n或等于n且与n互质的个数 欧拉函数求值://欧拉函数:@(x)表示与x互质且小于x的正整数的个数//如果x为素数,则欧拉函数等于x-1//求法:将x分解为p1^n1*p2^n2*p3^n3*....*pk^nk则://欧拉函数:p1^(n1-1)*p2^(n2-1)..原创 2012-10-16 19:28:17 · 912 阅读 · 0 评论 -
poj 1284 原根
现在越来越感觉到 ACMer如果想成为大牛 要不断的宽展自己的知识面 学习各种知识 明白定理的推导过程 这样才会有更大进步。//原根+完全剩余系://看了别人的解题报告 明白了原根的重要定理:// 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)//假设一个数g对于P来说是原根,那么g^i mod P的结果两两不同,且有 1<g<原创 2012-10-16 20:33:42 · 1792 阅读 · 1 评论 -
比赛又一次 被虐 加油!
大数求解:等差数列第n项值 等比数列第n项值,结果mod100007 #include#include#includeusing namespace std;long long d,q,a1,a2,a3,a4,ans;long long exp_mod(long long a,long long n,long long b)//快速幂取模:{ lon原创 2013-05-07 08:00:02 · 813 阅读 · 0 评论