数学
小青WA
扣扣1916493526
展开
-
AcWing 200. Hankson的趣味题
题意t组(2000)每组abcd问你有多少个x满足gcd(a,x) == c && lcm(b,x) == d思路题面给了0.3s根据题意可知x一定是d的因子,考虑枚举d的因子在check是否满足上面两个式子(check复杂度logn)纯暴力枚举d的因子是sqrt(n)的,那么总复杂度 2000 *sqrt(1e9) * logn≈ 1e8怎么减小寻找d的因子的复杂度呢?因为1e9内的一个数的约数<1600个,所以我们可以把sqrt(1e9)内的质...原创 2021-01-29 23:59:12 · 116 阅读 · 0 评论 -
Codeforces Round #697 (Div. 3) 1475 G. Strange Beauty
题意给你n个数(2e5) a[](2e5)问你最少删掉几个使得剩下的数两两之间一个数是另一个数的因子思路dp[i]表示数组中留下最大值到i有多少个数能留下ans =n -max(dp[]);要使两两之间一个数是另一个数的因子则如果当前最大到i,那么每个i的倍数j(i是j的因子)都能继承更新dp[i]的值,因为如果一个数k是i的因子(包含在dp[i]里) && j是i的倍数,那么k也一定是j的因子 //dp[j]=max(dp[i],dp[j]);代码#in...原创 2021-01-28 02:13:41 · 204 阅读 · 1 评论 -
Acwing198. 反素数
题意给你N(<2e9) 求N以内约数个数最多的最小的那个数?思路X = 2^c1 * 3^c2 * …… * 23^c9 约数个数=(c1 + 1)*(c2 + 1)*.....*(cn + 1);2e9的范围质因子最多用到23质因子的次数(c1~cn)最多是30(<2^31)且次数满足递减 c1>=c2>=c3......>=cn这是因为约数的个数只与次数c1~cn相关,我们要找的是约数个数最大的最小的那个数,如果c2>c3将两者次数交换产...原创 2021-01-27 01:17:47 · 125 阅读 · 0 评论 -
AcWing 196.质数距离
题意https://www.acwing.com/problem/content/198/思路题目旨在问对于一个较大的L、R区段如何对区段内数字判断isprime?假设A是合数则A必有一个因子< sqrt(A)所以我们可以对sqrt(R)以内的数据范围线性筛出所有素数prime[]对于现有这PNum个素数将他们在[L,R]内的倍数(>=2倍)全部标记为合数(埃筛)数据范围过大可以用相对位置标记代码#include<cstdio>#includ...原创 2021-01-24 00:42:56 · 183 阅读 · 0 评论 -
中国剩余定理 CRT
参考:https://www.cnblogs.com/MashiroSky/p/5918158.html问题求x?m[]互质推理过程详见上面链接poj1006互质版裸题#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int a[4],m原创 2021-01-21 00:38:59 · 125 阅读 · 0 评论 -
扩展欧几里得 extend_Euclid
推导过程原理代码int exgcd(int a,int b,int &x1,int &y1){ if(!b){ x1 = 1,y1 = 0; return a; } int x2,y2; int d = exgcd(b,a % b,x2,y2); x1 = y2,y1 = x2 - (a / b) * y2; return d;}求逆元x是a关于m的逆元原创 2021-01-14 01:32:02 · 104 阅读 · 0 评论 -
codeforces 916B
题意给你n(LL),k(1e5)让你将n分成k个数 2的ki的幂次之和 ==n要求在 最大的数尽量小的条件下 字典序尽量大。思路将n映射成二进制0 1标注,if(num >= k)没有答案else从最高位开始向下拆分(这是因为要使最大值最小)拆到出现最小的最大值不再拆分(这是因为要使字典序尽量大),此时从最小值开始依次拆分,从而保证了字典序的要求。【这个过程写...原创 2020-03-27 11:14:56 · 103 阅读 · 0 评论 -
codeforces1202D Print a 1337-string...
题目链接:http://codeforces.com/contest/1202/problem/D题意:T组,每次给你一个数n,要求你构建输出一个字符串(len <= 1e5,只有1,3,7组成),使得这个串中有n个“1337”子串。思路:组合成133(B个7)((A - 2)个3)7的形式n个子串即为B+ ((A - 2) * ((A - 1) - 2) / 2), -2...原创 2019-08-12 10:52:42 · 153 阅读 · 0 评论