![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
quinwu-
这个作者很懒,什么都没留下…
展开
-
nefu 115 斐波那契的整除(数论)
由于题目本身的数据量较大,依次计算第n项斐波纳契数再进行判断会超时,只能考虑斐波那契数中的循环节,#includeusing namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF) { if(n%12 == 0) { printf("YES\n"); }原创 2013-07-15 17:34:37 · 665 阅读 · 0 评论 -
poj 2796 Reduced ID Numbers(简单数论)
题目大概说的就是告诉你一组学生的学号,但老师觉得吧记住学生的学号太困难了,就想找到一个最小的数m使得这一组学号对m取余的值都不相同。这样老师就好记住了。题目水题一道:m从1开始枚举即可。只用在每次判断当前m值产生的余数是否唯一皆可。#include#include#includeusing namespace std;const int Maxsize = 350;const i原创 2013-07-13 22:06:08 · 643 阅读 · 0 评论 -
hdu 2099 整除的尾数(枚举数论)
简单的数论题目,整数的整除问题。//由于题目中的数据量比较小,因此用枚举法枚举出0-99的所有位数情况比较//注意题中的格式问题,若i在0-9的范围内能使m|n成立,则末尾两位应该是“0i”,//如题中数据的'00',因此在输出时用%02d进行格式控制.即不足两位的数字其余位补0//还有要注意的就是输出行中空格的控制,最后一组数据末尾没有空格.#includeusing namespace std原创 2013-07-15 17:34:35 · 620 阅读 · 0 评论 -
poj 2407 Relatives(欧拉函数)
题目的意思很明确,给一个正整数n,求出小于n切和n互素的正整数有多少个。简单的欧拉函数。φ(x),也可以说是||。乘法模运算中的群a的规模。#include#includeusing namespace std;int main(){ int Euler(int n); int n; while(cin>>n && n) { int原创 2013-07-18 09:23:16 · 759 阅读 · 0 评论 -
poj 3233 Matrix Power Series(矩阵快速幂)
题意很好理解,矩阵幂乘取模基本思路跟那个poj 1995 差不多,都要用到快速幂的思想。唯一的区别就是整数乘法变成了矩阵乘法。还有一个重要的地方就是k = 6 有: S(6) = (1 + A^3) * (A + A^2 +A^3) = (1 + A^3) * S(3)。 k = 7 有: S(7) = A+ (A + A^4) * (A + A^2 + A^3) = A +原创 2013-07-13 22:16:05 · 660 阅读 · 0 评论 -
uva 10673 Play with Floor and Ceil(简单数论)
这个题目不难,但是要是不知道floor跟ceil这两个函数,也很蛋疼。关键就是用这两个函数floor向下取整,ceil向上取整double floor(double x);double ceil(double x);#include#include#includeusing namespace std;int main(){ long double x,k;原创 2013-07-17 19:05:20 · 1370 阅读 · 0 评论 -
poj 2478 Farey Sequence(欧拉函数)
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} 先来说明下题意。告诉一直特定的序列,就是上面那一种,然后告诉你一个正整数n,求出Fn有多少项。先看上面的序列,可以发现分子跟分母都是不可约分的,对!例如分子为a,分原创 2013-07-18 19:21:30 · 640 阅读 · 0 评论 -
hdu 1021 Fibonacci Again(简单数论)
简单的数论,考察同余的用法。//数论中的同余//特殊的斐波纳契数列,依次计算判断会超时,cnt数组存放所有数的余数//cnt[i] = ( cnt[i-2] + cnt[i-1])%3;#includeint cnt[1000005];int main(){ int n; cnt[0] = 7%3; cnt[1] = 11%3; for(int i = 3 ; i原创 2013-07-15 17:34:40 · 675 阅读 · 0 评论 -
数论(快速幂跟矩阵快速幂)
(A1B1+A2B2+ ... +AHBH)mod M.高次幂取模乘方取模问题 计算x的值, a^n=x(mod(m))。显然 a^n = a*(a^n-1(mod(m)))(mod(m)). ans = 1; for(int i = 0 ; i < n ; i++) { ans *= a; ans %=m原创 2013-07-14 21:21:13 · 752 阅读 · 0 评论 -
poj 1995 Raising Modulo Numbers(快速幂)
(A1B1+A2B2+ ... +AHBH)mod M.高次幂取模乘方取模问题 计算x的值, a^n=x(mod(m))。显然 a^n = a*(a^n-1(mod(m)))(mod(m)).ans = 1;for(int i = 0 ; i < n ; i++){ ans *= a; ans %=m;}最简单的代码如上。这个算法的时间复杂度是O原创 2013-07-13 21:46:13 · 615 阅读 · 0 评论