
数论
文章平均质量分 73
皮得一1
这个作者很懒,什么都没留下…
展开
-
poj 2356 Find a multiple(鸽巢原理)
题意:给出一个数N,接着再给出N个数,要你从这N个数中任意选择1个或多个数,使得其和是N的倍数如果找不到这样的答案 则输出0答案可能有多个,但智勇任意输出一个解就行。输出的第一行是选择元素的个数M,接着M行分别是选择的元素的值思路:刚开始的时候并不同为什么这一题回事抽屉原理,分析后才有体会,实际上此题一定有解,不存在输出0的结果。证明如下我们可以依次原创 2016-05-20 21:46:16 · 415 阅读 · 0 评论 -
hdu 2824 The Euler function(欧拉函数)
欧拉函数模版#include #include #include #include #include using namespace std;#define LL __int64const 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 · 411 阅读 · 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 · 338 阅读 · 0 评论 -
UVa 11827 Maximum GCD
题意:给你一组数,求出其中两两最大公约数中最大的值。思路:数据较小,直接枚举。#includeint 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 · 382 阅读 · 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 · 421 阅读 · 0 评论 -
求a~b内与n互素的数的个数 容斥原理
http://blog.youkuaiyun.com/yzj577/article/details/38152511原创 2016-04-17 17:35:27 · 1714 阅读 · 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 · 395 阅读 · 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 · 435 阅读 · 0 评论 -
poj 1995 Raising Modulo Numbers(快速幂模板)
#include#include#includeusing 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 · 321 阅读 · 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 · 398 阅读 · 0 评论 -
poj 2115 C Looooops (扩展欧几里得算法)
题意:对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束。若在有限次内结束,则输出循环次数。否则输出死循环。参考资料:http://www.acmerblog.com/extend-gcd-5610.htmlhttp://blog.youkuaiyun.com/lyy289065406/article/details/664原创 2016-03-07 13:41:34 · 388 阅读 · 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 · 466 阅读 · 0 评论 -
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 · 542 阅读 · 0 评论