首页 > 其他分享 >UVA10791 最小公倍数的最小和 Minimum Sum LCM 题解

UVA10791 最小公倍数的最小和 Minimum Sum LCM 题解

时间:2023-07-17 14:12:51浏览次数:51  
标签:输出 公倍数 题解 ll 最小 因子

前言

长沙市一中8机房0714模拟测1。

传送门

blog

思路

本题思路,首先我们先看 $\operatorname{lcm}$,明显要使得这些数的 $\operatorname{lcm} = n$ 那么我们就需要所有的数的质因子必须包含 $n$ 的质因子。

若 $1 \le a,b$,则 $a\times b \ge a+b$,所以我们就有了策略。

将同一个质因子放在一个数中,这样就可以使得数最小。

for(ll i = 2;i <= sqrt(b);++i){
	ll sum = 1;
	while(b % i == 0){
		sum *= i;
		b /= i;
	}
	if(sum != 1)ans += sum;
}

这样就保证了每个质因数在同一个数中。

坑点

  1. $1$,两个正整数的值是 $1,1$ 所以我们需要输出 $2$。

  2. 质数,值为 $1,n$ 我们应该输出 $1 + n$。

  3. 质数的指数幂,值为 $n,1$,输出 $1 + n$。

  4. 输出 $ans$。

AC Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;

ll b;

int main(){
    int cnt = 0;
    while(1){
    	cnt++;
    	cin>>b;
    	if(b == 0)break;
	    if(b == 1){
		    cout<<"Case "<<cnt<<": "<<2<<endl;
		    continue;
	    }
	    ll ans = 0,can = 0;
	    for(ll i = 2;i <= sqrt(b);++i){
		    ll sum = 1;
		    while(b % i == 0){
			    sum *= i;
			    b /= i;
		    }
		    if(sum != 1)ans += sum,can++;
	    }
	    if(b > 1)ans += b,can++;
	    if(can < 2)cout<<"Case "<<cnt<<": "<<ans + 1;
	    else cout<<"Case "<<cnt<<": "<<ans;
	    cout<<endl;
    }
	return 0;
}

标签:输出,公倍数,题解,ll,最小,因子
From: https://www.cnblogs.com/JJL0610/p/17559926.html

相关文章

  • P9451 [ZSHOI-R1] 新概念报数 题解
    目录DescriptionSolutionCodeDescription在此题中,对于一个数\(x\),若\(\texttt{popcount}(x)\geq3\)(即\(x\)在二进制下\(\texttt{1}\)的个数大于等于三时),那它是非法的,否则其为合法的。给定\(T\)个数,如果当前的数\(x\)是非法的,则输出No,Commander,否则输出第一个大于......
  • requests.exceptions.ProxyError问题解决方法
    出现这个问题是因为你系统上在使用代理,然后你的代理又是规则匹配的。https://stackoverflow.com/questions/36906985/switch-off-proxy-in-requests-library3种解决方法:headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:109.0)Gecko/20100101Fi......
  • CF512D Fox And Travelling 题解--zhengjun
    计数好题。首先对于每个连通块独立考虑,最后合并答案。发现点数超过1的强连通分量一定删不掉。若连通块中存在点数超过1的强连通分量tarjan缩点之后,称这些点数超过1的强连通分量为关键点;那么两关键点之间的点也不能删;于是对于剩下的点直接dp即可,由于可删的子树......
  • 你省(福建)省队集训模拟赛题解
    Day5$\texttt{T1}$简要题意有两个正整数\(a<b\le10^9\),给出\(\dfrac{a}{b}\)的小数点后\(19\)位,要求还原\(a,b\),保证有解。solution一个科技:\(\texttt{Stern-Brocottree}(SBT)\),可以参考这个博客学习。先给出$O(n)$找的代码#include<bits/stdc++.h>#defineLL......
  • 洛谷-P9455 题解
    写在前面:本题蒟蒻给出两种做法,一种乱搞贪心(只是目前能过,若能被Hack请和我说),一种正解二分。正文1最坏时间复杂度:\(\mathcal{O}(n+\logV)(V=10^9)\)这个做法是很简单的,在此不多讲。只需要二分超频电压mid即可,若当前mid可行,则令右边界缩小至mid,否则令左边界扩大至mid。......
  • 230226题解
    A数列题目描述给定一个长为\(n\)的数列\(A_1,A_2,…,A_n\)。给出\(q\)次询问,每次询问给定\(X\),请你回答至少需要多少次操作,能够让数列中的每个数都变成\(X\)。每次操作你可以选择数列中的一个数加\(1\)或者减\(1\)。询问之间相互独立。输入格式第一行两个整数\(n,q\)。第......
  • 题解 HDU5726【GCD】/ LGT353762【Soso 的最大公约数】
    Problem给你一个长为\(N(1\leqN\leq1\times10^5)\)的整数序列:\(a_{1},\cdots,a_{n}(0<a_{i}\leq1\times10^9)\)。有\(Q(1\leqQ\leq1\times10^5)\)次提问。每次提问有个范围\(l,r\),你需要计算出\(\gcd(a_{l},,a_{l+1},...,a_{r})\),并且统计数对\((l’,r’......
  • Codeforces Round 896 Div2 A-D题解
    CodeforcesRound896A.Politics这题问的是,给一些人的在n个议题的观点,然后你可以随意安排顺序,每个议题人多的赢,反对派会离开,问随便安排议题,最多留下多少人,包括我自己这个题刚开始愣了半天,但是想到,那只要把所有和我观点一致的给留下来不就行了???然后交上去就AC了ACCode#inclu......
  • 题解 CF1842H【Tenzing and Random Real Numbers】
    看了题解。好难受,想用积分求概率,算了半天。发现没啥规律,不是不能算,就是太可怕了。Problem有\(n\)个\([0,1]\)范围内的均匀随机变量\(x_{1\cdotsn}\)和\(m\)条限制,每条限制形如\(x_i+x_j\le1\)或\(x_i+x_j\ge1\)。请你求出所有限制均满足的概率。对\(998244353\)......
  • Noip优质模拟赛口胡题解
    HDU5719题意概括:第一行输入t表示输入数据,每组数据第一行n,表示对1—n进行排序。接下来输入n个数b[n]表示排列中第i个数之前的最小值为b[i]。第三行n个数c[n],表示排列中第i个数之前的最大值为c[i]。解题思路:递推,排除掉6种不可能的情况,1、b[i]>b[i-1]2、c[i]<c[i-1]3、b[i]......