随笔分类 - 数论
摘要:转自: nailperry 一、1的数目 编程之美上给出的规律: 1. 如果第i位(自右至左,从1开始标号)上的数字为0,则第i位可能出现1的次数由更高位决定(若没有高位,视高位为0),等于更高位数字X当前位数的权重10i-1。 2. 如果第i位上的数字为1,则第i位上可能出现1的次数不仅受更高位影
阅读全文
摘要:描述两个数的a,b的gcd为1,即a,b互质,现在给你一个数m,你知道与它互质的第k个数是多少吗?与m互质的数按照升序排列。 样例输出 首先对m进行质因数分解,求出m有哪些质因数,然后用容斥求[1, mid]内与m互质的数有多少个。 判断的时候,[1,mid]之间与m互质的数的数量 = mid -
阅读全文
摘要:题意: 思路: 对于每个幂次方,将幂指数的二进制形式表示,从右到左移位,每次底数自乘,循环内每步取模。 #include <cstdio> typedef long long LL; LL Ksm(LL a, LL b, LL p) { LL ans = 1; while(b) { if(b & 1
阅读全文
摘要:题意:给出a和p,判断p是否为合数,且满足a^p是否与a模p同余,即a^p%p与a是否相等 算法:筛法打1万的素数表预判p。再将幂指数的二进制形式表示,从右到左移位,每次底数自乘。 #include <cstdio> #include <cstring> typedef long long LL;
阅读全文
摘要:题意: H_Number 是一个比4的倍数多1的数,即4n + 1。H_Number 分为 H_Prime 和 H_Comosite。其中 H_Prime 仅能由1×h组成,而 H_Composite 除了1和h可有多个因子。H_Semi_Prime 表示仅有两个 H_Prime 因子(除了1和本身
阅读全文
摘要:题意:一条整数链,要求相邻两数前一个整除后一个。给出链尾的数,求链的最大长度以及满足最大长度的不同链的数量。 类型:因式分解+排列组合 算法:因式分解的素因子个数即为链长,链中后一个数等于前一个数乘以某素因子,所以链的数量即为这些因子不全相异的全排列数:A!/(a1!a2!a3!..) #inclu
阅读全文
摘要:题意:给两个四位素数a和b,求从a变换到b的最少次数,每次变换只能变换一个数字并且变换的过程必须也是素数。 思路:先打表求出四位长度的所有素数,然后利用BFS求解。从a状态入队,然后从个位往千位的顺序枚举下一个素数,入队,直到状态为b为止。 #include <cstdio> #include <q
阅读全文
摘要:题意:给出n,求不大于n的素数有多少个。 算法:先用线性时间复杂度的筛法打素数表,对于每个输入统计不超过的素数个数。 #include <cstdio> int p[100010]; bool np[1000010]; int cntp; void SievePrime(int n) { for (
阅读全文
摘要:题意:给你一个循环小数,化成分数,要求分数的分母最小。 思路:暴力搜一遍循环节 把循环小数化分数步骤: 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位上的数都是9,9的个数与循环节的位数相同。能约分的要约分。 例: 这个分数的分子是第二个循环节以前的小数部分组成的数与
阅读全文
摘要:题意:求两数最大公约数和最小公倍数。 类型:辗转相除法 算法:gcd(a,b)=gcd(b,a%b),lcm(a,b)=a*b/gcd(a,b)。 #include <cstdio> #include <iostream> using namespace std; int gcd(int a, in
阅读全文
摘要:C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛。题解:因为n太大,感觉是个构造。写写小数据,看看有没有结论。 2 3 4 5 6 7 8 9 10 11 12 (人数) 1 2 2 3 3 3
阅读全文

浙公网安备 33010602011771号