Uva 10791 最小公倍数的最小和 唯一分解定理
2024-10-21 05:55:05
题目链接: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^31次方,循环检查到10^5;
3、特例 1,输出2;是素数 n+1;
#include <bits/stdc++.h> using namespace std; int divide_all(int& n,int d) {
int x = ;
while(n%d==) {
n/=d;
x*=d;
}
return x;
} long long solve(int n) {
if(n==) return ;
int m = sqrt(n)+0.5;
int pf = ;
long long ans = ;
for(int i=;i<=m;i++) {
if(n%i==) {
pf++;
ans+=divide_all(n,i);
}
}
if(n>) {pf++,ans+=n;}
if(pf<=) ans++; //是素数
return ans;
} int main()
{
int n;
int kase=;
while(scanf("%d",&n),n) {
cout<<"Case "<<kase++<<": "<<solve(n)<<endl;
}
return ;
}
最新文章
- 如何在springMVC 中对REST服务使用mockmvc 做测试
- 转:django 接收页面form的post数组
- PHPExcel读取Excel文件的实现代码
- 【转】C#Winform程序如何发布并自动升级(图解)
- Theano3.2-练习之数据集及目标函数介绍
- jtable插件api
- Java解析XML三种常用方法
- 欢迎大家提问Android技术及职业生涯等问题
- MySQL: 详细的sql语句
- MVC-处理时间格式
- OpenCV学习笔记:如何扫描图像、利用查找表和计时
- Android NetWorkUtil
- Struts2与ajax整合之缺点
- ●SPOJ 8222 NSUBSTR&ndash;Substrings(后缀自动机)
- 一文搞懂RAM、ROM、SDRAM、DRAM、DDR、flash等存储介质
- Scrapy框架基本用法讲解
- 数据库的DevOps实践
- [security][modsecurity][nginx] nginx 与 modsecurity
- javaee开发模式
- 转:Struts2返回JSON数据的具体应用范例