![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学
文章平均质量分 70
~无相~
这个作者很懒,什么都没留下…
展开
-
AcWing 222. 青蛙的约会
题目两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。我们把这两只青蛙分别叫做青蛙原创 2020-10-23 09:08:46 · 104 阅读 · 0 评论 -
AcWing 203. 同余方程
题目求关于x的同余方程 ax ≡ 1(mod b) 的最小正整数解。输入格式输入只有一行,包含两个正整数a,b,用一个空格隔开。输出格式输出只有一行,包含一个正整数x,表示最小正整数解。输入数据保证一定有解。数据范围2≤a,b≤2∗109输入样例:3 10输出样例:7思路本题求线性同余方程,那么只要用扩展欧几里得算法求出特解,之后用(x % b + b) % b 求最小解即可代码#include <cstring>#include <iostream&原创 2020-10-22 13:39:24 · 180 阅读 · 0 评论 -
AcWing 220. 最大公约数
题目给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。GCD(x,y)即求x,y的最大公约数。输入格式输入一个整数N输出格式输出一个整数,表示满足条件的数对数量。数据范围1≤N≤107输入样例:4输出样例:4思路题目要求x和y最大公约数是素数,转化gcd(x,y)为素数,设置p=gcd(x,y),即有gcd(x/p,y/p)=1,即求N/p以内所有互质的数字的对数,用线性筛欧拉函数的方法求以下前缀和即可代码#include &l原创 2020-10-22 13:30:19 · 192 阅读 · 1 评论 -
线性筛欧拉函数模板
const int N = 1010;int primes[N], cnt;bool st[N];int phi[N];void init(int n){ phi[1] = 1; for (int i = 2; i <= n; i ++ ) { if (!st[i]) { primes[cnt ++ ] = i; phi[i] = i - 1; } ..原创 2020-10-22 09:10:57 · 150 阅读 · 1 评论 -
AcWing 198. 反素数(dfs求约数最多并且是其中最小的数)
题目对于任何正整数x,其约数的个数记作g(x),例如g(1)=1、g(6)=4。如果某个正整数x满足:对于任意的小于x的正整数 i,都有g(x)>g(i) ,则称x为反素数。例如,整数1,2,4,6等都是反素数。现在给定一个数N,请求出不超过N的最大的反素数。输入格式一个正整数N。输出格式一个整数,表示不超过N的最大反素数。数据范围1≤N≤2∗109输入样例:1000输出样例:840思路题目其实要求的是约数最多并且是其中最小的数由于2∗3∗5∗7∗11∗13∗17∗原创 2020-10-11 11:18:13 · 191 阅读 · 0 评论 -
AcWing 1294. 樱花(阶层分解质因数)
题目给定一个整数 n,求有多少正整数数对 (x,y) 满足 1x+1y=1n!。输入格式一个整数 n。输出格式一个整数,表示满足条件的数对数量。答案对 109+7 取模。数据范围1≤n≤106输入样例:2输出样例:3样例解释共有三个数对 (x,y) 满足条件,分别是 (3,6),(4,4),(6,3)。推导代码#include <cstring>#include <iostream>#include <algorithm>usin原创 2020-10-11 11:11:21 · 253 阅读 · 0 评论 -
AcWing 1290. 越狱
题目监狱有连续编号为 1 到 n 的 n 个房间,每个房间关押一个犯人。有 m 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人信仰的宗教相同,就可能发生越狱。求有多少种状态可能发生越狱。输入格式共一行,包含两个整数 m 和 n。输出格式可能越狱的状态数,对 100003 取余。数据范围1≤m≤108,1≤n≤1012输入样例:2 3输出样例:6样例解释所有可能的 6 种状态为:(000)(001)(011)(100)(110)(111)。思路正着不行那就反向思考原创 2020-10-10 14:23:08 · 133 阅读 · 0 评论 -
快速幂模板
代码int qmi(int a, int k){ int res = 1; while (k) { if (k & 1) res = (LL)res * a % mod; a = (LL)a * a % mod; k >>= 1; } return res;}原创 2020-10-10 14:04:05 · 95 阅读 · 0 评论 -
阶乘分解模板
就是线性筛后不断分解即可代码#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 1000010;int primes[N], cnt;bool st[N];void init(int n){ for (int i = 2; i <= n; i ++ ).原创 2020-10-10 13:53:30 · 84 阅读 · 0 评论 -
AcWing 196. 质数距离(区间筛质数)
题目给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对。同时,你还需要找到距离最远的两个相邻质数D1和D2(即D1-D2是最大的),如果存在相同距离的其他相邻质数对,则输出第一对。输入格式每行输入两个整数L和U,其中L和U的差值不会超过1000000。输出格式对于每个L和U ,输出一个结果,结果占一行。结果包括距离最近的相邻质数对和距离最远的相邻质数对。(具体格式参照样例)如果L和U之间原创 2020-10-10 13:48:18 · 182 阅读 · 0 评论 -
AcWing 1293. 夏洛克和他的女朋友(二分图染色+素数判断)
题目夏洛克有了一个新女友(这太不像他了!)。情人节到了,他想送给女友一些珠宝当做礼物。他买了 n 件珠宝,第 i 件的价值是 i+1,也就是说,珠宝的价值分别为 2,3,…,n+1。华生挑战夏洛克,让他给这些珠宝染色,使得一件珠宝的价格是另一件珠宝的价格的质因子时,两件珠宝的颜色不同。并且,华生要求他使用的颜色数尽可能少。请帮助夏洛克完成这个简单的任务。输入格式只有一行一个整数 n,表示珠宝件数。输出格式第一行一个整数 k,表示所使用的颜色数;第二行 n 个整数,表示第 1 到第 n原创 2020-10-09 09:35:36 · 245 阅读 · 0 评论 -
线性筛模板
int primes[N], cnt;//primes记录下所有素数bool st[N];//用于判断某个数是不是素数void init(int n){ for (int i = 2; i <= n; i ++ ) { if (!st[i]) primes[cnt ++ ] = i; for (int j = 0; primes[j] * i <= n; j ++ ) { st[primes[j] *原创 2020-10-09 09:22:40 · 111 阅读 · 1 评论 -
AcWing 1292. 哥德巴赫猜想(判断素数)
题目哥德巴赫猜想的内容如下:任意一个大于 4 的偶数都可以拆成两个奇素数之和。例如:8=3+520=3+17=7+1342=5+37=11+31=13+29=19+23现在,你的任务是验证所有小于一百万的偶数能否满足哥德巴赫猜想。输入格式输入包含多组数据。每组数据占一行,包含一个偶数 n。读入以 0 结束。输出格式对于每组数据,输出形如 n = a + b,其中 a,b 是奇素数。若有多组满足条件的 a,b,输出 b−a 最大的一组。若无解,输出 Goldbach’s conj原创 2020-10-09 09:20:04 · 351 阅读 · 0 评论