摘要:
\(\gcd\) 定义:求出两个数的最大公因数。 算法定律:\(\gcd(a,b)=\gcd(b,a\bmod b)\) 证明: 设$\gcd(a,b)=k,a=t_1\times k,b=t_2\times k$ 可知,\(\gcd(t_1,t_2)=1\),如果还有一个$t$,那么就可以说明$a 阅读全文
摘要:
题面传送门 \(a x \equiv 1 \pmod b\) 其实这个同余方程就是$ax\bmod =1$ 就想是$ax$减掉若干个$b$剩下的$1$ 即$ax-by=1$,然后直接用$exgcd$,求出来$x$就可以了,然后$y$求出来也不用管了,因为要正整数解,所以求出来一个$x$,就要输出$( 阅读全文
摘要:
题面传送门 我天,搞死我了,细节不少啊 思路 首先,一定会看出来可以在暴力的基础上加一点优化——预处理出每个点的第一近的点和第二近的点。(我枯了) 然后,弄好之后,我们发现,如果从不同点开始,有可能还是会走到一起,(即为后面一段相同),所以,就有了另一个优化——倍增,如果还不会的话,可以看看$rmq 阅读全文
摘要:
题面传送门 思路 一看,高精度,参见高精度模板--zhengjun,这个模板十分好用(直接粘贴就可以了)。(代码中就不显示了) 然后,如果是这样的排列: ||| |-|-| |之前的$a$乘积为$t$|\(\cdots\)| |\(k\)|\(a_0,b_0\)| |\(k+1\)|\(a_1.b_ 阅读全文
摘要:
题面传送门 思路 一看,数据这么小,打个搜索剪枝一下就可以了。 然后,我打完了之后,$T$了一个点,就使劲想剪枝,就是已经走到的点就不用再走一次了。 代码 #include<bits/stdc++.h> #define maxn 101 #define maxm 10001 using namesp 阅读全文
摘要:
题面传送门 思路 一道模拟,注意细节即可 代码 #include<bits/stdc++.h> using namespace std; string a,b; int main(){ cin>>a>>b; for(int i=0,j=0;i<b.length();i++,j=(j+1)%a.len 阅读全文
摘要:
题面传送门 思路 一看就是一道$dp$ 用$f_{i,j}$表示摆到第$i$种花,已经摆了$j$盆花所有的可能性; 初始化:\(f_{0,0}=1\) 状态转移公式: \(f_{i,j}=\sum\limits_{k=1}^{min(a_i,j)}f_{i-1,j-k}\) 这里就直接用滚动数组了。 阅读全文
摘要:
题面传送门 思路 首先,一看就是一道模拟,然后这个是暴力代码(50分) #include<bits/stdc++.h> using namespace std; int n,m,x; int a[10001][101],b[10001][101],c[10001]; int main(){ scan 阅读全文
摘要:
题面传送门 思路 一看就是一道搜索的好题目。 说道搜索,就想到了剪枝优化,然后,可以想到一个很简单的剪枝,就是先选所在的行、列、宫已知的数字最多的格子,这样有点麻烦,我就直接看看行就完事了。 然后,然后就是一个搜索了。 代码 #include<bits/stdc++.h> #define max(x 阅读全文
摘要:
题面传送门 思路 不就一道模拟吗,于是我就从$n$开始找,结果$T$了,然后,就想到了从小到大找,找到了就输出$n\div i$,结果就$A$了 代码 #include<bits/stdc++.h> using namespace std; int n; int main(){ cin>>n; fo 阅读全文