题解 UVa10791
题目大意 多组数据,每组数据给出一个正整数 \(n\),请求出一组数 \(a_1\cdots a_m\),满足 \(LCM_{k=1}^ma_k=n\) 且 \(\sum_{k=1}^ma_k\) 最小。
分析 我们以两个数为例进行研究。假定 \(LCM(a,b)=n\) 则如果 \(GCD(a,b)\neq 1\),有 \(LCM(\frac{a}{gcd(a,b)},b)=n\),且 \(a+b>\frac{a}{gcd(a,b)}+b\)。故当且仅当 \(gcd(a,b)=1\) 时最优。而对于多个数的情况,也是当且仅当 \(\prod_{k=1}^ma_k=n\) 时最优。而对于正整数 \(a_1\geq 2,a_2\geq2,\cdots,a_m\geq2\),总有 \(\sum_{k=1}^ma_k\leq \prod_{k=1}^ma_k\)。所以如果可以将 \(n\) 质因数分解为 \(n=\prod_{k=1}^mp_k^{q_k}\)(其中 \(\forall i\in\mathbb{N+},p_i\) 为质数),则当且仅当 \(\forall i\in\mathbb{N+},a_i=p_i^{q_i}\) 时有最优解。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t, tot, n, ans;
map<ll, ll> m;
ll QuickPow(ll a, ll b)
{
ll res = 1;
while(b) {
if(b & 1) res *= a;
a = a * a, b >>= 1;
}
return res;
}
int main()
{
while(~scanf("%lld", &n) && n) {
m.clear(), ans = 0, tot = 0;
for(ll i = 2; i * i <= n && n > 1; ++i)
while(n % i == 0) ++m[i], n /= i;
if(n > 1) m[n] = 1;
map<ll, ll>::iterator it = m.begin();
while(it != m.end()) {
ans += QuickPow(it->first, it->second);
++it, ++tot;
}
if(tot < 2) ans += 2 - tot;
printf("Case %lld: %lld\n", ++t, ans);
}
}
题解 UVa10791的更多相关文章
- 题解:UVA10791 Minimum Sum LCM
原题 题目大意 输入整数\(n(1\le n<2^{31})\) ,求至少两个正整数,是它们的最小公倍数为$ n$,且这些整数的和最小.输出最小的和. 有多组测试输入,以\(0\)结束. 题解 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
随机推荐
- Angular 使用 ng2-file-upload 上传文件遇到的问题
Angular 上传文件 可参考Angular2使用ng2-file-upload上传文件 这里记录在开发过程中遇到的问题: 删除选择的文件后,不能再选择上次选择的相同的文件 在 firefox 浏览 ...
- Linux 下面 oracle 数据库连接工具的安装还有特殊字符密码登录的设置
1. 下载Oracle的连接客户端 https://www.oracle.com/database/technologies/instant-client/downloads.html 2. 我这里仅 ...
- FastReport For Delphi7 通用安装方法
安装前请册除原有的FR控件. 1. "Tools|Environmet options..."中的"Library"标签面下"Library path ...
- 【实战经验】STM32烧录
1.编译 2.配置烧录工具 2.配置烧录工具 3.配置烧录工具(一般街上Jlink就能检测到对应的STM32芯片) 5.选择FLASH 4.烧录 5.烧录完成
- UI单据按钮点击事件校验
一.按钮点击前事务处理<BeforeEventProcess> public override void BeforeEventProcess(IPart part, string eve ...
- git 学习笔记 ---标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照 ...
- 属性动画 补间动画 帧动画 基本使用案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- SpringCloud微服务基础学习
看了蚂蚁课堂的微服务学习,确实学习了不少关于微服务的知识,现在总结学习如下 : SpringCloud微服务基础单点系统架构传统项目架构传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一 ...
- .net Dapper 实践系列(2) ---事务添加(Layui+Ajax+Dapper+MySQL)
目录 写在前面 问题描述 解决方法 具体实现 写在前面 前面我们已经搭建好了项目,这一小节我们使用Dapper 中的事务实现一对多的添加操作. 问题描述 在做添加的时候很头疼需要从页面传递一组数据到后 ...
- C# 获取系统字体方法
//需要引用命名空间 using System.Drawing; using System.Drawing.Text; //获取系统字体方法 public dynamic GetFontNames() ...