数论
Mavis code
这个作者很懒,什么都没留下…
展开
-
HDU 5373 The shortest problem - 数论
思路: 第一种思路就是利用数论知识:若一个数的奇位数字之和与偶位数字之和的差能被11整除,则这个数可以被11整除。 第二种思路就是模拟。 提交时要选G++,选c++会超时,之前WA了那么多次,就是这个原因,想哭 。。。AC code://第一种思路的代码(递归写法)#include<iostream>#include<cstdio>#include<...原创 2018-08-23 21:59:45 · 398 阅读 · 0 评论 -
2019杭电多校-1006-Fansblog(威尔逊定理+大整数判断素数)
题面:威尔逊定理传送门AC code:#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <map> using namespace std;t...原创 2019-07-30 10:44:37 · 185 阅读 · 0 评论 -
CF538div2-C-Trailing Loves (or L'oeufs?)-数论
题目传送门题意:给你n<=1e18,k<=1e12,求n!(n的阶乘)转化为k进制后,有多少个后导0.思路:问题转化为求n%(k^r) == 0的r的最大值。由于自己叙述太麻烦,就将官方题解贴出来。The problem can be reduced to the following: finding the maximum r that n ! is divisible ...原创 2019-02-15 21:22:21 · 734 阅读 · 0 评论 -
POJ2429 GCD & LCM Inverse pollard_rho大整数分解-好题
题意:给出两个数的最大公约数和最小公倍数,找出这两个数,并使它们的和最小。思路:设gcd = a1a2…an,lcm = a1a2*…ank;则lcm/gcd = k;现在题目转化为:求两个互质的数a,b满足a*b =k,且a+b最小。这里首先想到质因数分解,但是平时的埃式筛选法还有欧拉筛选法都不行,空间太大。这里要用到一种很巧妙的随机算法-Pollard_rho(大整数质因数分解)还有...原创 2018-09-30 14:32:14 · 199 阅读 · 0 评论 -
Pollard_rho随机算法+Miller_rabin算法-大整数质因数分解
Pollard_rho算法详解传送门素数判定Miller_Rabin 算法详解传送门随机算法Pollard_rho分解大整数质因数,随机算法Miller_rabin素数判定。我理解了一个下午还有一个晚上(特别在debug花费了2个小时),结果犯了一个低级隐形错误,我照着模板改了好几次,都没改出来。最后改出来,心里都崩溃了。最终是两个if的顺序弄反了。但是我白这两个写反了。为了避免这种条件...原创 2018-09-29 23:22:36 · 529 阅读 · 0 评论 -
Prime Path-POJ3126-1欧拉筛选法+BFS-好题
题意:给你两个四位数的质数m,n(m&amp;lt;=n),每次变化只能改变当前数的一个数字,并且过程中的数字全是四位数的质数,求最小的步数。思路:先欧拉筛选法求出素数,然后从m开始BFS,每次只改变一个数位,如何只改变一个数位(这个很关键),这里用一个dir数组,dir[4] = {1,10,100,1000},具体看代码注释理解。AC code:#include&amp;lt;iostream&amp;gt...原创 2018-10-03 11:42:19 · 176 阅读 · 0 评论 -
Dead Fraction-POJ1930-辗转相除法-小数化为分数的技巧
题目传送门题意:将一个无限循环小数化为分数,但是循环节不定,省略号…可以是任何数字。比如0.474612399…循环节可能是从第一位开始就循环,也可能从第二位开始循环,但是最后一位(省略号前一位至少循环)。所以,可以枚举非循环的部分从0(第一位开始循环)到size-1(最后一位循环)。具体如何将无限循环小数化为分数,有数论的知识技巧。无限循环小数化为分数的技巧具体细节看代码注释。AC ...原创 2018-10-02 21:42:43 · 334 阅读 · 0 评论 -
UVA 11582 Colossal Fibonacci Numbers!(数论)
思路: 所有计算都对n取模。余数存在周期规律,最多n2项就会重复。然后快速幂判断目标处于周期的那个位置即可。注意用cin,而不是scanf,之前这里改了好久。AC code:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;const int maxn...原创 2018-09-15 15:57:22 · 126 阅读 · 0 评论 -
数论-唯一分解定理-Choose and divide-UVA10375
思路: 唯一分解定理,先求出1e4以内的所有素数,然后用数组e表示当前结果的唯一分解式中的各个素数的指数。AC code:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;#include&lt;vector&gt; using namespace std;const原创 2018-09-15 16:44:15 · 167 阅读 · 0 评论 -
数学-优雅的暴力枚举-Codeforces Round #506 (Div. 3)-F. Multicolored Markers
题目传送门 题意: 给定红色砖块和蓝色砖块的数量,求他们组成实心矩形,并且至少有一种颜色本身组成矩形的最小周长。 思路: 假定一种颜色组成小矩形,然后求出它所有小于sqr(该颜色)的所有因子,并用数组存储下来,所以复杂度是O(sqrt(n)),也就是1e7,可以过。然后就是枚举总面积的因子,满足两者的长和长,宽和宽的大小关系(由于是从1-sqrt(n)枚举,所以枚举的当前值就是较少值宽,s...原创 2018-08-29 22:48:13 · 125 阅读 · 0 评论 -
Codeforces Round #506 (Div. 3) D. Concatenated Multiples - 数论
题目传送门 题意: 给定n个数,将任意两个数连接起来。求有多少对这样的组合使得组合后的数能被k整除? 思路: 暴力肯定不行,暴力就是一个一个去组合,所以会超时。那我们换一种思路,给定一个数,寻找能与他匹配的数有多少个。这样只要n的复杂度,所以我们要预处理一下(我们就是巴一中漫无目的的寻找转化为有目的的寻找,暴力就是将两者绑定在一起然后才能判断,而预处理则是两者并没有必然联系,不会不可分离)...原创 2018-08-29 21:21:48 · 169 阅读 · 0 评论 -
2019暑假牛客第10场-D,Han Xin and His Troops-拓展欧几里得-线性同余方程组
题目传送门题面:思路:拓展欧几里得解线性同余方程组模板题。只是要注意会爆long long,所以全部改为__int128输入输出。#include<bits/stdc++.h>using namespace std;#define per(i,a,b) for(int i=(a);i<=(b);i++)#define rep(i,a,b) for(int ...原创 2019-08-18 14:51:13 · 209 阅读 · 0 评论