UVA.10791 Minimum Sum LCM (唯一分解定理) 题意分析 也是利用唯一分解定理,但是要注意,分解的时候要循环(sqrt(num+1))次,并要对最后的num结果进行判断. 代码总览 #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #define nmax 505 #define ll long long using namespace…
题意:给出n,求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小 看的紫书--- 用唯一分解定理,n=(a1)^p1*(a2)^p2---*(ak)^pk,当每一个(ak)^pk作为一个单独的数的时候,和最小 然后就有三种情况 普通的,比如,2*3*3*5,sum=2+9+5=16 只有1个因数的,比如32=2^5,sum=32+1; 没有因数,自己本身是质数,sum=n+1: 因为分解的时候是找到根号n的,比如21,最后还会剩下7,所以sum=sum+n #include<iost…
唯一分解定理 把n分解为 n=a1^p1*a2^p2*...的形式,易得每个ai^pi作为一个单独的整数最优. 坑: n==1     ans=2: n因子种数只有一个     ans++: 注意溢出. #include <iostream> #include <cstring> using namespace std; typedef long long ll; ll ans=; ll n; ll sign[]; ll pri[]; int tot; void getpri ()…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1732 题意: 输入整数n(1≤n<2^31),求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小.输出最小的和. 分析: 设唯一分解式n=(a1^p1)*(a2^p2)…,不难发现每个(ai^pi)作为一个单独的整数时最优.注意几个特殊情况:n=1时答案为1+1=…
最大公倍数的最小和 题意: 给一个数字n,范围在[1,2^23-1],这个n是一系列数字的最小公倍数,这一系列数字的个数至少为2 那么找出一个序列,使他们的和最小. 分析: 一系列数字a1,a2,a3……an,他们的LCM是n,那么什么时候他们是最优解(和最小)呢,当他们两两互质的时候. a和b的LCM是n,GCD是m,那么n=a/m*b , 它们的和就是sum=a+b; 如果m不为1(即a和b不互质),那么我们为什么不优化一下,将a变为a=a/m呢?,改变后a和b的LCM依然是n,但是他们的和…
https://vjudge.net/problem/UVA-10791/origin 以上为题目来源Google翻译得到的题意: 一组整数的LCM(最小公倍数)定义为最小数,即 该集合的所有整数的倍数.有趣的是,可以表示任何正整数作为一组正整数的LCM.例如12可以表示为1.12或12.12或3.4或4.6或1.2.3.4等 在此问题中,您将得到一个正整数N.您必须找出一组至少两个正整数,其LCM为N.如果可能,您必须选择元素总和最小的序列.我们会很高兴如果您仅打印此元素的总和组.因此,对于N…
题目链接 不知道为什么,我用cin,cout就是过不了...改成scanf过了... 还是我居然理解错题意了,已经不能用看错了...至少两个数字,我理解成两个数字了,还写了个爆搜... #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <ctime> #include <cstdlib> #include <iostr…
题意:输入整数n(1<=n<231),求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小.输出最小的和. 分析: 1.将n分解为a1p1*a2p2……,每个aipi作为一个单独的整数时最优. 2.n为1时,len==0:n为素数时,len==1. #pragma comment(linker, "/STACK:102400000, 102400000") #include<cstdio> #include<cstring> #includ…
原题:https://vjudge.net/problem/UVA-10791 基本思路:1.借助唯一分解定理分解数据.2.求和输出 知识点:1.筛法得素数 2.唯一分解定理模板代码 3.数论分析-唯一分解定理的性质 唯一分解定理:该定理通过素数将任意一个大于2的n分解为 最小质数因子的幂 的乘积.这是一个数字简化的过程. 题目易错点在于要求得到的是 ‘n的多个因子的和’,且该多个因子的最小公倍数为n.是多个,而不是两个!!由此看来,其实如果把分解定理得到的每一个‘质数^指数’的形式看作一个整数…
L - Minimum Sum LCM Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVA 10791   题意:输入正整数n,<注意n=2^31-1是素数.结果是2^31已经超int.用long long,>找至少两个数,使得他们的LCM为n且要输出最小的和: 思路:既然LCM是n,那么一定是n的质因子组成的数,又要使和最小,那么就是ans+…
LCM (Least Common Multiple) of a set of integers is defined as the minimum number, which is a multiple of all integers of that set. It is interesting to note that any positive integer can be expressed as the LCM of a set of positive integers. For exa…
UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4053   Accepted: 1318 Description The binomial coefficient C(m,n) is defined as m! C(m,n) = -------- n!(m-n)! Given four natural numbers p, q…
Pairs Forming LCM Find the result of the following code: ; i <= n; i++ )        for( int j = i; j <= n; j++ )           if( lcm(i, j) == n ) res++; // lcm means least common multiple    return res;} A straight forward implementation of the code may…
题目链接:https://cn.vjudge.net/problem/LightOJ-1236 题意 给一整数n,求有多少对a和b(a<=b),使lcm(a, b)=n 注意数据范围n<=10^14 思路 唯一分解定理 要注意的是条件a<=b,这就是说,在不要求大小关系的情况下 ans包括a<b,a>b和a==b的情形,最终答案就是(ans+1)/2 注意数据范围,求因数时使用1e7的素数即可,剩余的未被分解的数一定是大素数 首先求一下素数加速求因数,其次注意prime*pr…
对于一个数n 设它有两个不是互质的因子a和b   即lcm(a,b) = n 且gcd为a和b的最大公约数 则n = a/gcd * b: 因为a/gcd 与 b 的最大公约数也是n 且 a/gcd + b < a + b 又因为a/gcd 与 b 互质  所以n的最小的因子和为 所有质因子的和 同理推广到多个质因子 由算术基本定理求出所有的质因子 则 nut = 所有质因子 ^ 个数 的和  自己想一想为什么把... 注意n为1时 #include <iostream> #includ…
题意(就是因为读错题意而wa了一次):给一个数字n,范围在[1,2^23-1],这个n是一系列数字的最小公倍数,这一系列数字的个数至少为2 例如12,是1和12的最小公倍数,是3和4的最小公倍数,是1,2,3,4,6,12的最小公倍数,是12和12的最小公倍数……………… 那么找出一个序列,使他们的和最小,上面的例子中,他们的和分别为13,7,28,24……显然最小和为7 /* 我们很容易可以发现,将n唯一分解之后,把所有质因数乘以次数加起来就行了.比如:12=2^2*3^1,那么ans=2^2…
题意: 输入n,求至少两个正整数,使得这些数的最小公倍数为n且和最小. 分析: 设n的分解式为,很显然单独作为一项,和最小. 这里有两个小技巧: 从2开始不断的除n,直到不能整除为止.这样就省去了素数判断的问题,而且缩短了代码量.因为最开始把所有n的2的因数都出去了,后面便不会出现n % 4 == 0的情况,这样除n的都是素数. 从2除n一直到sqrt(n),如果n不为1,则此时除“剩下”的就是n最大的质因数.减少循环次数. #include <cstdio> #include <cma…
http://lightoj.com/volume_showproblem.php?problem=1236 Pairs Forming LCM Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1236 Description Find the result of the following code: long long pairs…
链接: https://vjudge.net/problem/LightOJ-1236 题意: Find the result of the following code: long long pairsFormLCM( int n ) { long long res = 0; for( int i = 1; i <= n; i++ ) for( int j = i; j <= n; j++ ) if( lcm(i, j) == n ) res++; // lcm means least co…
原题 题目大意 输入整数\(n(1\le n<2^{31})\) ,求至少两个正整数,是它们的最小公倍数为$ n$,且这些整数的和最小.输出最小的和. 有多组测试输入,以\(0\)结束. 题解 首先,我们把问题简化:输入正整数\(n\),求几个正整数(可以是一个),是它们的最小公倍数为\(n\),且这些整数的和最小.输出最小的和. 我们考虑\(n\)是素数时,不难证明只有一个数\(n\),那么如果要求至少要分解成两个,那么只能在加一个\(1\). 当\(n\)是合数时.如果\(n\)能被分解为两…
分析即为紫薯上的分析. 难点是发现当每个aipi作为一个单独的整数时才最优.. 答案就是将所有不同的 相同因子的积 相加即可 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<stack> #include<queue> #include<map> #in…
题目链接:https://vjudge.net/contest/156903#problem/E 题意:已知 求:C(p,q)/C(r,s) 其中p,q,r,s都是10^4,硬算是肯定超数据类型的. 可以这样处理:利用唯一分解式约分: 首先将所有数,唯一分解:最后,算素数的乘积: #include <bits/stdc++.h> using namespace std; ; vector<int> primes; int e[maxn]; bool is_prime(int n)…
#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; ; long long f[maxn], ccount; void init(long long n){ long long m = (long long)sqrt(n + 0.5); ccount = ; ; i <= m && n > ;…
题目链接 首先介绍两个定理. 整数唯一分解定理:任意正整数都有且只有一种方式写出素数因子的乘积表达式. \(A=(p1k1 p2k2 ...... pnkn \) 求这些因子的代码如下 ;i*i<=a;++i){ if(!(a%i)){ prime[++num]=i; while(!(a%i)){ a/=i; sum[num]++; } } } ){ prime[++num]=a; sum[num]=; } 唯一分解定理 约数和公式:对于已经分解的整数A,有A的所有因子和为 \( S= (1+p…
唯一分解定理是指任何正整数都可以分解为一些素数的幂之积,即任意正整数n=a1^p1*a2^p2*...*ai^pi:其中ai为任意素数,pi为任意整数. 题意是输入整数n,求至少2个整数,使得它们的最小公倍数为n,且这些整数的和最小,输出最小的和.由唯一分解定理可看出当每个ai^pi作为一个单独的整数时最优,只要注意你=1时的答案为2,n的因子只有一种时需要加个1以及n=2^31-1不要溢出即可写出程序.需注意的是应从2开始寻找质因子,因为2是最小的素数,由于习惯从1开始循环则是错误的. 代码如…
题目链接:https://vjudge.net/contest/156903#problem/C 题意:给一个数 n ,求至少 2个正整数,使得他们的最小公倍数为 n ,而且这些数之和最小. 分析: 利用唯一分解定理: 可以知道,最好是把每一个ai^pi为一个整数: 1.ai^pi不能再分,否则最小公倍数就将小于 n;题目就变成了将 n 唯一分解. 2.由于小于 n 的最大素数是一个界限,不然会超时.处理方案是:m = sqrt(n) + 0.5,最后判断一下 n;或者如上一个题目一样,数据时2…
/** 题目:Irrelevant Elements UVA - 1635 链接:https://vjudge.net/problem/UVA-1635 题意:給定n,m;題意抽象成(a+b)^(n-1)按照二次项分布后每个系数的值按照位置分别为c1,c2,c3...: 如果ci%m==0; 那么输出这个位置. 思路:已知n,计算系数的方法:c(n,m) = (n-m+1)/m*c(n,m-1) ;由于c(n,m-1)%m不一定等于0.所以要先乘. 由于n达到了1e5,所以如果算结果是不可行的.…
题意:求C(p,q)/C(r,s),4个数均小于10000,答案不大于10^8 思路:根据答案的范围猜测,不需要使用高精度.根据唯一分解定理,每一个数都可以分解成若干素数相乘.先求出10000以内的所有素数,用a数组表示唯一分解式中个素数的指数,求出每个分子部分的素因子,并且相应的素数的指数加一.分母则减一.最后求解唯一分解式的值. #include<stdio.h> #include<string.h> #include<math.h> ; int pr[N],p[N…
http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1341 Description It's said that Aladdin had to solve seven…
唯一分解定理: Uva10791 题意: 输入整数n,要求至少两个正整数,使得他们的最小公倍数为n,且这些整数的和最小 解法: 首先假设我们知道了一系列数字a1,a2,a3……an,他们的LCM是n,那么什么时候他们是最优解呢,当他们两两互质的时候 为了方便我们以两个数来说明问题. a和b的LCM是n,GCD是m,那么n=a/m*b , 它们的和就是sum=a+b; 如果m不为1(即a和b不互质),那么我们为什么不优化一下,将a变为a=a/m呢?,改变后a和b的LCM依然是n,但是他们的和显然减…