![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 65
皮得一1
这个作者很懒,什么都没留下…
展开
-
poj 1061 青蛙的约会(扩展欧几里得算法)
思路:设青蛙跳了k次,那么就有(x+mk)-(y+nk)=p*L.即x-y+(m-n)k=p*L,即(m-n)*k≡(y-x) (mod L).这个线性同余方程有解当且仅当gcd(m-n,L)|(y-x).令a=m-n,b=L,c=y-x.用扩展欧几里得解方程ax+by=c.可以求出原方程的一个解.如何求最小正整数解呢?假设我们已经得到一个x0,令d=gcd(m-n,L),那么所有解可以表示为x=原创 2016-02-16 18:19:41 · 508 阅读 · 0 评论 -
poj 2356 Find a multiple(鸽巢原理)
题意:给出一个数N,接着再给出N个数,要你从这N个数中任意选择1个或多个数,使得其和是N的倍数 如果找不到这样的答案 则输出0 答案可能有多个,但智勇任意输出一个解就行。 输出的第一行是选择元素的个数M,接着M行分别是选择的元素的值 思路:刚开始的时候并不同为什么这一题回事抽屉原理,分析后才有体会,实际上此题一定有解,不存在输出0的结果。 证明如下 我们可以依次原创 2016-05-20 21:46:16 · 384 阅读 · 0 评论 -
hdu 2824 The Euler function(欧拉函数)
欧拉函数模版 #include #include #include #include #include using namespace std; #define LL __int64 const LL maxn=3e6+10; LL phi[maxn+10]; void phi_table()//求欧拉函数 { LL i,j,k; for(i=2;i<maxn;i++)原创 2016-05-16 16:43:35 · 358 阅读 · 0 评论 -
poj 2478 Farey Sequence(欧拉函数)
题意:给定一个数n,求小于或等于n的数中两两互质组成的真分数的个数。 思路: 仔细观察题目给的信息便可以发现下面的几组数据之间有联系: F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3, 1/2, 2/3, 3/4} F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5} F3的分数的个数为F2原创 2016-03-07 15:18:32 · 350 阅读 · 0 评论 -
poj 2407 Relatives(欧拉函数模板题)
#include using namespace std; int Euler(int n) { int res = n,i; for(i=2; i * i <= n; i++) if(n%i == 0) { n /=i ; res = res - res/i; while(原创 2016-03-07 13:37:30 · 404 阅读 · 0 评论 -
poj 2115 C Looooops (扩展欧几里得算法)
题意:对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束。 若在有限次内结束,则输出循环次数。 否则输出死循环。 参考资料: http://www.acmerblog.com/extend-gcd-5610.html http://blog.csdn.net/lyy289065406/article/details/664原创 2016-03-07 13:41:34 · 349 阅读 · 0 评论 -
UVa 10200 Prime Time(素数)
题意:通过公式计算出一个数,判断这个数是否为素数。在区间[a,b]上通过公式算出素数占总数的百分比。 #include #include int prime(int n) { int i; for(i=2;i*i<=n;i++) { if((n%i)==0) return 0; } return 1; } int原创 2016-05-16 13:50:21 · 312 阅读 · 0 评论 -
hdu 2161 Primes(素数)
题意:输入n,是素数输出yes,不是则输出no。 #include #include #include #include using namespace std; int p[16001]; int main() { int n,k=0; memset(p,-1,sizeof(p)); p[1]=0; p[2]=0; for(int i=3;原创 2016-05-16 12:12:08 · 382 阅读 · 0 评论 -
UVa 11827 Maximum GCD
题意:给你一组数,求出其中两两最大公约数中最大的值。 思路:数据较小,直接枚举。 #include int gcd(int a,int b){//求最大公约数 return b?gcd(b,a%b):a; } int main(){ int T; int a[105]; char c; scanf("%d",&T); while (getchar() != '\n'); whil原创 2016-05-16 13:12:06 · 337 阅读 · 0 评论 -
求a~b内与n互素的数的个数 容斥原理
http://blog.csdn.net/yzj577/article/details/38152511原创 2016-04-17 17:35:27 · 1650 阅读 · 0 评论 -
poj 2142 The Balance(扩展欧几里德算法)
题意:有两种类型的砝码,每种的砝码质量a和b,现在要求称出质量为d的物品,天平两侧都可以放砝码,要求a的数量x和b的数量y最小,以及x+y的值最小。 #include #include #include #include #include #include #include using namespace std; int a,b,c,x,y; int exgcd(int a,原创 2016-03-09 20:17:30 · 402 阅读 · 0 评论 -
poj 1995 Raising Modulo Numbers(快速幂模板)
#include #include #include using namespace std; const int maxn=50000; int m,h; long long ans; long long QMulti(long long a,long long n) { long long ans=1; while(n) { if(n&1)原创 2016-03-07 15:27:19 · 299 阅读 · 0 评论 -
poj 2417 Discrete Logging(baby-step算法)
参考资料:http://www.cppblog.com/csu-yx-2013/archive/2012/07/29/185562.html?opt=admin #include #include #include #include using namespace std; #define MAX (1000000) long long nData[MAX]; long long nK原创 2016-03-11 19:06:19 · 370 阅读 · 0 评论