<span style="font-family:FangSong_GB2312;font-size:18px;">/*
Sample Input
12
10
5
0
Sample Output
Case 1: 7
Case 2: 7
Case 3: 6分解质因子,注意溢出,一直没注意,错了n次。题意:给一个数字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
首先假设我们知道了一系列数字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,但是他们的和显然减少了
所以我们得到最重要的一个性质,要想a1,a2,a3……an的和最小,要保证他们两两互质,只要存在不互质的两个数,就一定可以近一步优化
那我们怎么保证两两互质呢?方法其实很简单,直接分解质因子
例如24=2*2*2*3 , 只能分解为8和3,因为这里有3个2,这3个2必须在一起,如果分开了这3个2,这出现有两个数会有一个公共的质因子2,并且会使这两个数的LCM不是24
再例如72=2*2*2*3*3,只能分为8和9,因为3个2和2个3都不能分开,他们必须在一次
所以,我们将一个数n分解为质因子后,顺便做一个处理,在除干净一个质因子的同时,将他们乘起来作为一个因子,处理完后会得到多个因子,他们之间同样满足两两互质的性质
然后是进一步的分析
例如264600=8*27*25*49  , 只是由3个2,3个3,2个5,2个7,处理后得到的因子,那么8,27,25,49的LCM是264600,
并且两两互质,他们还要不要处理呢?不需要了,直接将他们加起来就是我们要的答案!为什么呢?
可以将8,27,25,49这些数字乘起来,无论怎样乘都好,最后得到的数字它们的LCM依然是n,但是乘起来再相加显然比直接相加要大得多!
所以我们已经得到了这个问题的解法
1.将一个数分解成质因子,将相同的因子乘起来作为一个处理后的因子
2.将处理后得到的多个因子直接相加就是答案
3.因为题目说只要需要两个数字,所以对于1和素数我们需要小心。对于素数,我们只能分解出一个因子就它自己,对于1一个因子都分解不出来(我们不把1当做因子),他们的答案都是n+1,因为只有1和n的LCM是n
*/
#include <iostream>
#include <stdio.h>
#include <math.h>using namespace std;int main()
{int k = 0,n;while(scanf("%d",&n) && n){int f = 0;long long sum = 0;int m = (int)sqrt((double)n + 10);for(int i = 2; i <= m; i ++)if(n % i == 0){++ f;int t = 1;while(n % i == 0){t *= i;n /= i;}sum += (long long)t;}if(f == 0)///素数sum = (long long)n + 1;else if(f == 1 || n != 1)sum += (long long)n;printf("Case %d: %lld\n",++ k,sum);}return 0;
}
</span>

UVA10791 Minimum Sum LCM(数论)相关推荐

  1. Minimum Sum LCM(uva10791+和最小的LCM+推理)

    L - Minimum Sum LCM Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submi ...

  2. 28行代码AC——Minimum Sum LCM UVA - 10791(最大质因子)

    励志用尽量少的代码做高效表达 题目(提交)链接-->UVA - 10791 题意 输入正整数n,找至少两个数,使得他们的最小公倍数(Least Common Multiple)为n且要输出最小的 ...

  3. UVa 10791 Minimum Sum LCM

    分析一波发现,将原数尽可能地分解成"质数的k次方"的和,会使得答案最大而数字和最小 于是就可以愉快地质因数分解了. 注意判断若n是质数,答案为n+1. 1 /**/ 2 #incl ...

  4. HDU-3743 Minimum Sum,划分树模板

    Minimum Sum 被这个题坑了一下午,原来只需找一个最中间的数即可,我以为是平均数. 题意:找一个数使得这个数和区间内所有数的差的绝对值最小.输出最小值. 开始用线段树来了一发果断T了,然后各种 ...

  5. C. Orac and LCM(数论)

    C. Orac and LCM(数论) 题目传送门 g 1 = g c d [ l c m ( a 1 , a 2 ) , l c m ( a 1 , a 3 ) - l c m ( a 1 , a ...

  6. 【BZOJ2226】LCM SUM,数论之一维LCM(莫比乌斯反演)

    Time:2016.06.18 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 一开始的我只能推出一个O(n√⋅n√=n)O(\sqrt n·\sqrt n=n)的式子(两次分块), ...

  7. Minimum Possible LCM

    https://codeforces.com/contest/1154/problem/G 题意:给定数组,求其中lcm(a,b)的最小的a和b的位置. 题解:枚举GCD /* *@Author: S ...

  8. 洛谷 题解 CF910C 【Minimum Sum】

    当时看到这题一脸懵逼,莫名想到了复杂度为O(10000000000*n)的算法,然而肯定会超时(废话) 算法楼上楼下都说的很清楚了 很明显这题是要用每个字母的权值进行排序.然后依次进行赋值. \(\c ...

  9. Codeforces 963A Alternating Sum 【数论+数学】

    官方题解这个样子我觉得说得比较清楚.Z我们可以朴素的预处理出来(注意乘法膜),q的话考点在于[分数取膜]即 (a/b)%P = a* inverse of b %P 这就涉及到算b的逆元,我用的是欧几 ...

最新文章

  1. 深度学习在计算机视觉中的应用长篇综述
  2. 蘑菇模拟器TV版 for Android,安卓NES模拟器TV版下载
  3. Java遍历Map对象的四种方法
  4. 塞尔达amiibo_塞尔达荒野之息pC版(附带全Amiibo)安装教程,最无敌的游戏
  5. 允许使用抽象类类型 isearchboxinfo 的对象_final关键字、抽象类以及接口
  6. VS2015下使用websocketpp和asio构建websock服务器
  7. 在Linux操作系统下使用虚拟光驱的方法
  8. 实战项目:考勤系统的需求分析
  9. Spring集成web环境步骤
  10. python tkinter教程 博客园_python tkinter教程-事件绑定
  11. myeclipse左侧的目录树没了或不是竖向而是横向显示了
  12. mysql not regexp_Mysql必知必会——使用正则表达式搜索(REGEXP)
  13. 生命计算机在线,抖音死亡计算器寿命计算器在线测试入口 使用生命年龄计算器...
  14. MFiX存储ReactionRates的模块
  15. 图像处理之底片效果、黑白效果、浮雕效果
  16. 入侵sf服务器技术_入侵服务器、疯狂攻击各种网站, 这个黑客团伙终被“团灭”!...
  17. 盛金公式解一元三次方程_用盛金公式求解一元三次方程
  18. 隧道点云处理(三):一种简单的隧道二维中线提取方法
  19. 博客备份系统之一:PDF,Word,TXT文件操作类
  20. PCB板材及叠层结构(转)

热门文章

  1. 安装VMware-tools出现initctl: Job failed to start
  2. 真正无需修改BIOS即可让任意老主板实现NVME协议的固态硬盘做启动盘 2021年(适用于支持UEFI启动的老主板)
  3. 潜入维基解密机房 更新中文视频+高清图
  4. java线程池售票_Java多线程卖票例子
  5. Oracle JOB查看
  6. oracle 报错ins 32008,oracle升级报错ins—32027
  7. Python 做一个“番茄工作法” 的 小闹钟程序,提高学习效率啊 有没有? 哈哈
  8. 后端接口重定向_Java访问重定向接口
  9. 基于emp的 单表查询 练习题及答案
  10. 第三方支付重新洗牌,拉卡拉支付能否激流勇进?