UVA 10791 Minimum Sum LCM 数论
题目链接: https://vjudge.net/problem/UVA-10791
题目描述: 给一个数n, 让你求至少两个数的lcm是n 的, 最小和
解题思路: 唯一分解, 每个单独的素数的幂加起来就是答案
代码:
#include <iostream> #include <cstdio> #include <string> #include <vector> #include <cstring> #include <iterator> #include <cmath> #include <algorithm> #include <stack> #include <deque> #include <map> #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 #define mem0(a) memset(a,0,sizeof(a)) #define meminf(a) memset(a,0x3f,sizeof(a)) #define fi(n) for(i=0;i<n;i++) #define fj(m) for(j=0;j<m;j++) #define sca(x) scanf("%d",&x) #define scalld(x) scanf("%I64d",&x) #define print(x) printf("%d\n",x) #define printlld(x) printf("%I64d\n",x) #define d printf("=======\n")typedef long long ll; using namespace std; //const int maxn = 1e6+10; vector< pair<ll, int> > V; vector< pair<ll, int> >::iterator it; void build( ll num ) {ll m = (double)sqrt(num+0.5); // cout << m << endl;for( int i = 2; i <= m; i++ ) {int cnt = 0;while( num % i == 0 ) {num /= i;cnt++;}if( cnt != 0 ) {V.push_back(make_pair(i, cnt));}}if( num > 1 ) {V.push_back(make_pair(num, 1));} }//const int INF = 1e11; int main() {ll n;int cases = 1; // for( int i = 0; i < 12; i++ ) { // cout << prime[i] << " "; // } // cout << endl;// cout << cnt << endl; // freopen("in.txt", "r", stdin );while( cin >> n && n ) {V.clear();if( n == 1 ) {cout << "Case " << cases++ << ": " << 2 << endl; continue; }build(n);int cnt = (int)V.size();double res = 0;for( it = V.begin(); it != V.end(); it++ ) {res += pow( double(it->first), double(it->second) );}if( cnt == 1 ) cout << "Case " << cases++ << ": " << ll(res+1) << endl;else cout << "Case " << cases++ << ": " << ll(res) << endl;}return 0; }
View Code
思考: 哎, 我都不想说啥了, 一开始RE了, 是我素数分解的时候不长脑子, 后来我没有特判1, 我还一直以为是自己哪里格式出了毛病, 结果还真得打了一个"#", 以后做题直接复制粘贴吧, 自己打了一年多了还是改不了马虎的习惯, 真的是是很烦
转载于:https://www.cnblogs.com/FriskyPuppy/p/7399150.html
UVA 10791 Minimum Sum LCM 数论相关推荐
- UVa 10791 Minimum Sum LCM
分析一波发现,将原数尽可能地分解成"质数的k次方"的和,会使得答案最大而数字和最小 于是就可以愉快地质因数分解了. 注意判断若n是质数,答案为n+1. 1 /**/ 2 #incl ...
- Minimum Sum LCM(uva10791+和最小的LCM+推理)
L - Minimum Sum LCM Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submi ...
- 28行代码AC——Minimum Sum LCM UVA - 10791(最大质因子)
励志用尽量少的代码做高效表达 题目(提交)链接-->UVA - 10791 题意 输入正整数n,找至少两个数,使得他们的最小公倍数(Least Common Multiple)为n且要输出最小的 ...
- UVA10791 Minimum Sum LCM(数论)
<span style="font-family:FangSong_GB2312;font-size:18px;">/* Sample Input 12 10 5 0 ...
- HDU-3743 Minimum Sum,划分树模板
Minimum Sum 被这个题坑了一下午,原来只需找一个最中间的数即可,我以为是平均数. 题意:找一个数使得这个数和区间内所有数的差的绝对值最小.输出最小值. 开始用线段树来了一发果断T了,然后各种 ...
- 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 ...
- 【BZOJ2226】LCM SUM,数论之一维LCM(莫比乌斯反演)
Time:2016.06.18 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 一开始的我只能推出一个O(n√⋅n√=n)O(\sqrt n·\sqrt n=n)的式子(两次分块), ...
- Minimum Possible LCM
https://codeforces.com/contest/1154/problem/G 题意:给定数组,求其中lcm(a,b)的最小的a和b的位置. 题解:枚举GCD /* *@Author: S ...
- UVA 10515 - Powers Et Al.(数论)
UVA 10515 - Powers Et Al. 题目链接 题意:求出m^n最后一位数 思路:因为m和n都非常大,直接算肯定是不行的,非常easy想到取最后一位来算,然后又非常easy想到最后一位不 ...
- Uva - 12050 Palindrome Numbers【数论】
题目链接:uva 12050 - Palindrome Numbers 题意:求第n个回文串 思路:首先可以知道的是长度为k的回文串个数有9*10^(k-1),那么依次计算,得出n是长度为多少的串,然 ...
最新文章
- Linux Centos 上一些常用的命令
- [泰然翻译] cocos2d programming guide 场景和菜单
- python创建txt文件
- python sys,os模块总结
- Java 核心编程技术干货
- 《财富》:盖茨的四项黄金法则
- B-Donut Drone(循环/分块/DP)
- Java Swing井字游戏
- Java笔记(四)各类容器,set,map,队列实现
- java内部类简单解析
- python3装饰器例子_python3装饰器用法示例
- MySQL数据库入门学习
- WORD文档怎么转换成EXCEL
- Cannot mix different versions of joi schemas解决方案
- 为Oracle 18c数据库打PSU补丁
- 远程访问双层嵌套Openstack云下的Windows虚机(by quqi99)
- PyQt5 QPushButton 设置文字对齐方式(基于setStyleSheet)
- 新时达电梯服务器显示外呼错,干货:电梯报UCMP故障,其故障现象太怪异了……...
- 组织要为每一个员工赋能
- Apache Mina Demo
热门文章
- mysql查询交叉连接_MySQL表连接(内连接、交叉连接、外连接、联合查询)-阿里云开发者社区...
- layui 监听表单提交form.on(‘submit(sub)‘,function (){}) ajax请求失败问题
- go map二维数据追加
- Python获取图片的大小/尺寸
- 2021桂花开得真晚,晚了将近一个月
- 增加一个输出,解决一个奇怪的死机
- 一天到晚都在转笔,不需要写代码、调试,用眼看就行了?
- 全网首发:以字型为例,以bit表示的二维数组矩阵,旋转90、-90
- 庆贺使用VS2017编译OpenJDK12成功!
- FireFox的插件范例,竟然有问题