![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
今天没吃药
这个作者很懒,什么都没留下…
展开
-
HDU1005 - Number Sequence (矩阵快速幂)
题目链接: HDU1005 - Number Sequence思路代码思路类似斐波那契数列的推导式,但是所求 n 太大,所以用了矩阵快速幂(不了解矩阵快速幂的点我 )。 有人做好像是有周期可循的, 但还是矩阵快速幂来的简单暴力。代码#include <cstdio>#include <cstdlib>using namespace std;const int mod = 7;struct原创 2015-08-30 01:50:12 · 685 阅读 · 0 评论 -
HDU1014 - Uniform Generator (gcd的应用)
题目链接 : HDU1014 - Uniform Generator思路代码思路根据题意,易知要使生成一个均匀的数列,只要保证 stepstep 和 modmod 互质即可,所以只要验证 gcd(step, mod) gcd(step,\ mod) 是不是为 11。 为什么互质就可以满足要求呢,我是这样理解的。 要生成均匀的数列,那么 0→(mod−1)0 \to (mod-1) 间的每一个原创 2015-08-30 23:15:07 · 563 阅读 · 0 评论 -
HDU1019 - Least Common Multiple (LCM的简单应用)
此处输入链接的描述思路代码思路一次求出所有数的最小公倍数就行了, a∗b=gcd(a,b)∗lcm(a,b) a * b = gcd(a, b)*lcm(a, b)。注意用 long long 小心溢出。代码#include <cstdio>using namespace std;typedef long long LL;LL gcd(LL a, LL b){ return b ==原创 2015-08-31 17:43:59 · 273 阅读 · 0 评论 -
POJ3070 - Fibonacci (矩阵快速幂)
题目链接:POJ3070 - Fibonacci解题思路代码解题思路给了一种新的斐波那契数列的求解思路,需要对一个矩阵连乘,可以类推数的快速幂来进行求解代码#include <iostream>using namespace std;const int mod = 10000;struct matrix{ int data[2][2]; matrix operator*(mat原创 2015-08-26 17:20:42 · 479 阅读 · 0 评论 -
UVa12169 - Disgruntled Judge (扩展欧几里得)
UVa12169 - Disgruntled Judge解题思路代码利用扩展欧几里得求解代码解题思路因为递推公式对10001取模,所以 a,b 的取值范围就可以缩小到 [0,10000], 最简单的就是直接对 a,b 进行枚举,满足条件就作为正确答案。代码#include <iostream>using namespace std;const int mod = 10001;int t,原创 2015-08-30 01:11:56 · 564 阅读 · 0 评论 -
HDU1021 - Fibonacci Again (水题 找规律)
题目链接思路代码思路打表,算出所有的 fibfib 数(可以直接算,也可以用矩阵快速幂),然后依次输出就行,数列的每一位需要对 33 取余,否则会溢出。 另一种方法是,打表时很容易就会发现规律。 代码// 规律#include <cstdio>using namespace std;int main(){ int num; while(scanf("%d", &num)=原创 2015-09-01 15:55:16 · 369 阅读 · 0 评论 -
HDU1061 - Rightmost Digit (二分幂取模)
题目链接思路代码思路需要取出 NNN^N 的最后一位,就相当与对 1010 取模。二分幂取模实际上就是利用分治的思想。nn=n(n/2)∗n(n/2)n^n=n^{(n/2)}*n^{(n/2)}, 如果 n&1==1n\&1==1 还需要再乘上一个 n。代码#include <cstdio>#include <cmath>using namespace std;int pow_mod(int原创 2015-09-08 16:41:15 · 458 阅读 · 0 评论