【XSY2753】LCM】的更多相关文章

题目描述 给你\(n,k\),要你选一些互不相同的正整数,满足这些数的\(lcm\)为\(n\),且这些数的和为\(k\)的倍数. 求选择的方案数.对\(232792561\)取模. \(n\leq {10}^{18},k\leq 20\),\(n\)的全部质因子都\(\leq 100\) 题解 解法一 一个\(\leq {10}^{18}\)的数最多有\(15\)不同的质因子. 记\(w=15,m=2^w=32768\) 先看看这个模数有什么特点. \(p=232792561=lcm(1,2,…
Description 给你\(n,k\),要你选一些互不相同的正整数,满足这些数的lcm为\(n\),且这些数的和为\(k\)的倍数. 求选择的方案数.对\(232792561\)取模. \(n\le10^{18},k\le20,n的全部质因子都\le100\) Solution \(n\le10^{18}\)时其质因数个数最多只有15个.记\(n\)的质因子个数为\(m\). ​ 设\(g_{i,j}\)表示有多少个\(n\)的因数\(d\),满足\(d\)中\(i\)状态的质因子的指数与\…
给一个序列,每次给一个长度l,问长度为l的区间中lcm最小的. 题解:因为ai<60,所以以某个点为左端点的区间的lcm只有最多60种的情况,而且相同的lcm区间的连续的. 所以就想到一个n*60*logn的做法,倍增找出每个点的区间lcm情况,然后修改答案…… 1-60的lcm的积大于long long,只能把数拆开,然后比较时用log,结果才用这个数的质因数相乘. 问题在于一开始我对于每个点开个20的数组记录60内第几个质数的个数,这样每次常数就要再乘个20,然后就tle…… 优化的方法是位…
数论/莫比乌斯反演/线性筛 题解:http://www.cnblogs.com/zyfzyf/p/4218176.html JZPTAB的加强版?感觉线性筛好像还是不怎么会啊……sad 题目记下来,回头再复习复习 /************************************************************** Problem: 2694 User: Tunix Language: C++ Result: Accepted Time:1868 ms Memory:52…
题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之和. 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 4 2 4 3 3 6 5 8 3 样例输出 24 28 233 178 题解 莫比乌斯反演+线性筛 (为了方便,以下公式默认$n\le m$) $\ \ \ \…
题意:给定b,求lcm(a,b)/a有几种不同的取值 b<=1e10 思路:只有a取b的因子时答案两两不同 #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<iostream> #include<algorithm> #include<map> #include<set> #include<que…
题目大意 \(t\)组询问, 每组询问给定\(n\),求\(\sum_{k=1}^n[n,k]\),其中\([a,b]\)表示\(a\)和\(b\)的最小公倍数 . \(t\leq 300000,n\leq 1000000\) 题解 \[ \begin{align} \sum_{k=1}^n[k,n]&=n\sum_{k=1}^n\frac{k}{(k,n)}\\ &=n\sum_{p|n}\frac{1}{p}\sum_{k=1}^nk[(k,n)=p]\\ &=n\sum_{p…
[算法]欧几里德算法 #include<cstdio> int gcd(int a,int b) {?a:gcd(b,a%b);} int main() { int a,b; scanf("%d%d",&a,&b); printf("%lld",1ll*a*b/gcd(a,b)); ; }…
               本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 数论就是指研究整数性质的一门理论.数论=算术.不过通常算术指数的计算,数论指数的理论.整数的基本元素是素数,所以数论的本质是对素数性质的研究.它是与平面几何同样历史悠久的学科.它大致包括代数数论.解析数论.计算数论等等. Math.NET也包括了很多数论相关的函数,这些函数都是静态的,可以直接调用,…
题目链接 算法:辗转相除(欧几里得) gcd(a, b)是a和b最小公倍数, lcm(a, b)是a和b的最大公倍数 gcd(a, b) == gcd(b, a%b) 时间复杂度: O(lgb) 具体证明很多的,百度即可. 代码: int gcd(int a, int b){return (b?gcd(b, a%b):a);} (非递归版自己推) lcm(a, b) = a*b/gcd(a, b) 这里要注意个细节优化,在程序中应该防止溢出,即要写成 lcm(a, b) = a/gcd(a, b…