摘要: 这道题,属实将我搞懵了,看了好久才将题意看懂。 刚开始因为认为除了特判情况下,每一行每一列都要存在#,然后当#之间存在’ . ‘时便直接为-1. 后来发现存在情况,当行和列都存在空行时也符合条件。 最基本例子: 当第一行和最后一列都为.,反而能在(1,n)处放N极,且不影响,因此只要将这个条件判过, 阅读全文
posted @ 2020-05-24 23:25 Ean1zhi 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 一般来说对于单一的数,进行判断。 bool isprime(long long x){ if(x<=3) return x>1; if(x%6!=1&&x%6!=5) return false; long long k=sqrt(x); for(int i=5;i<=k;i+=6){ if(x%i= 阅读全文
posted @ 2020-02-14 13:52 Ean1zhi 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 运用线性方程求乘法逆元应该算是数论中最基础的了,现在就要分析其代码。 现有模板: int exgcd(int a,int b,int &x,int &y){ if(b==0){ x=1;y=0;return a;//此时的a为最大公约数; } int n=exgcd(b,a%b,&x,&y); in 阅读全文
posted @ 2020-02-10 13:57 Ean1zhi 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 对于素数p: 如果p%4==1 则p是两个平方数的和。 如果余3,则不是。 三角数:前n项和,即3、6、 10 之类。 完全数:所有因数和为本身。例如 6,28,496. 若 p+2为素数,则城 其为孪生素数。 存在无限个p,使p+2 p+4为素数吗?这个问题的答案是不可能,因为总有一个余三。 本原 阅读全文
posted @ 2020-02-07 20:30 Ean1zhi 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 对于A题,因为它的k是有限的,就没必要去管n的范围,只要在[n-1500,n+1500]加入k然后循环一遍就行,当然1500是随便的,想2000也行。 一下为代码: #include<iostream> #include<cmath> #include<cstring> using namespac 阅读全文
posted @ 2020-01-20 09:50 Ean1zhi 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 这道题通过简化方程可得,当n为平方数的时候,解为无穷,当%4不为0时为0 0;计算 但是要小心,这道题的代码要经过优化。一下为两种代码,一个tle,一个accept。 #include<iostream> #include<cmath> using namespace std; typedef lo 阅读全文
posted @ 2020-01-19 23:06 Ean1zhi 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 这道题目提示了波兰特-切比雪夫定理,然后可以知道 在[n,2n]之间必然存在一个素数。 而题目给的n,k; 即从k+1开始,传向[2,n+1]; 那么必然存在一个素数p 在 [(n+1)/2,n+1]之间,只要传到这个p,下一步即可覆盖整个区间. 随后的步骤就可以确定了,就是判断k+1是[n+1/2 阅读全文
posted @ 2020-01-13 20:16 Ean1zhi 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 这道题目要求给定一组数据,选出最多个数使数字两两互质,数据的个数小于14个。 对于这么小的范围,暴力解肯定能过。 用0.1表示是否选该数。 则一共有2^n次选法,遍历即可。 以下为代码 #include<iostream> #include<queue> #include<string> #incl 阅读全文
posted @ 2020-01-12 21:13 Ean1zhi 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 这个题目,讲的是给一个数X,它要求得两个数a,b,使ab的最小公倍数为x,因为x的范围在10的12次之内,所以说通过sqrt过后暴力解是可行的。 然后要明白,当x是素数的时候输出的就是本身即可。 以下为代码 #include<iostream> #include<queue> #include<st 阅读全文
posted @ 2020-01-11 18:58 Ean1zhi 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题目讲的是给一组数据,X得到的所有数据之和,Y得到的是一个区间的总和,但这个区间不能是[1,n];要求如果X大于Y就输出YES 反之 NO 这种题目如果不想麻烦就从[1,n-1]和[2,n]求最大值。 求连续区间最大值的方法就是建一个新的数组,下标i代表这以i为结尾的连续区间的最大值。 则 maxn 阅读全文
posted @ 2020-01-11 14:52 Ean1zhi 阅读(184) 评论(0) 推荐(0) 编辑