2016年8月17日
摘要: Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 76641 Accepted: 17158 Description Assume the coasting is an infinite str 阅读全文
posted @ 2016-08-17 15:30 wastonl 阅读(223) 评论(0) 推荐(0)
摘要: #include #include using namespace std; int a[10]={0,1,2,3,4,5,6,7,8,9}; const int n=10; int main() { /* 当n=3时,那么有集合0,1,2,01,02,12,012七种情况 i=1时 001只选择最后一位 i=2时 010只选择第二位 ... 阅读全文
posted @ 2016-08-17 09:39 wastonl 阅读(230) 评论(0) 推荐(0)
  2016年8月16日
摘要: /* 中国剩余定理简单解释: 定理:如果a%b=c 那么(a+kb)%b=c 首先看一个简单例子:对于x%3=2,x%5=3,x%7=2,求解x(最小) 令m[i]=3,5,7 a[i]=2,3,2; 我们假设n1%3=2,但是又要满足另外两个方程的解,那么n1必须是5,7的倍数 同理n2%3=2且n2必须是3,7的倍数,n3%7=2且n3... 阅读全文
posted @ 2016-08-16 09:50 wastonl 阅读(259) 评论(0) 推荐(0)
  2016年8月15日
摘要: /* 对10000以内的素数打表 */ #include #include #include #include using namespace std; const int maxs = 10000+1;//只要改变这个的范围就能对多少范围内打素数表 int prime[maxs];//从1开始,prime[0]置为0 bool vis[maxs];//对数字做标记vis[100]... 阅读全文
posted @ 2016-08-15 11:10 wastonl 阅读(278) 评论(0) 推荐(0)
  2016年8月13日
摘要: /* 题目大意:对于m%a1=r1,m%a2=r2...m%ak=rk,求最小的非负的m的值 联立前面两个方程组则有a1*x-a2*y=r2-r1; 可利用欧几里得算法求出最小的非负x 那么满足前两个方程的一个特解m=a1*x+r1; 所有解M=m+x*LCD(a1,a2);---LCD(a1,a2)最小公倍数 在联立第3个方程,另a1 = LCD(... 阅读全文
posted @ 2016-08-13 20:54 wastonl 阅读(218) 评论(0) 推荐(0)
  2016年8月12日
摘要: 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int p,e,i,d,n,counts = 0,ans; 8 //(x+d)%23=p,(x+d)%28=e,(x+d)%33=i,使用中国剩余定理 9 //因为23,28,33,可直接使用定理,令x+d=n 10 /... 阅读全文
posted @ 2016-08-12 10:29 wastonl 阅读(137) 评论(0) 推荐(0)
  2016年8月11日
摘要: 通过poj1811整理这些算法的模板 所有代码如下: 阅读全文
posted @ 2016-08-11 21:11 wastonl 阅读(443) 评论(0) 推荐(0)
摘要: 对于一个整数n,求小于n且和n互质的数的个数,可用欧拉函数求解。 例如eular(10)=4,互质的数有1,3,7,9. Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有 素因数(素因数> 阅读全文
posted @ 2016-08-11 11:12 wastonl 阅读(178) 评论(0) 推荐(0)
  2016年8月9日
摘要: 对于整数a,b,x,y,c 有a*x+b*y=c,如果c不是a与b的最大公约数的倍数,那么此方程无解 证明:设gcd(a,b)=d,即最大公约数,那么a*x%d=0,b*y%d=0 则(a*x+b*y)%d=0,说明c是一个d的倍数,相反的,如果c不是d的倍数,那么次方程无解 对于欧几里得算法 in 阅读全文
posted @ 2016-08-09 22:10 wastonl 阅读(278) 评论(0) 推荐(0)
摘要: 一.乘法快速取余 算a*b%n 二.乘方取模 算a^n%m 定理:要计算只包含加减乘的整数表达式除以整数m的余数时,可以在每步计算时对m取余 容易想到的代码如下: int ans = 1;for(int i=1;i<=n;i++) ans=ans*a%m; 这样做时间发杂度为O(n),如果n=10^ 阅读全文
posted @ 2016-08-09 16:06 wastonl 阅读(673) 评论(0) 推荐(0)