zoukankan      html  css  js  c++  java
  • 【UVA10791】最小公倍数的最小和

    题意

    输入正整数n(1 ≤ n ≤ 231 − 1),找至少两个数,使得他们的LCM为n且要输出最小的和(看错题哭唧唧)

    分析

    唯一分解定理模板。

    首先要明确分解出来的两个数一定是互质的,如果不互质,肯定会有更优秀的,毕竟还可以约掉一个gcd,比如4和6不如3和4

    因此根据唯一分解定理 N=p1c1  *  p2c  *  p3c *……  pnc 

    只要乘起来刚好等于N,这些数其实就是pc,于是答案就是p1c1  +  p2c  +  p3c +……  pncn   

    代码

    1. #include<bits/stdc++.h>  
    2. using namespace std;  
    3. #define RT register   
    4. #define ll long long  
    5. ll k,cas,ans,num;  
    6. void divide(ll n)  
    7. {  
    8.     ans=0;num=0;  
    9.     ll m=(ll)sqrt((double)n + 10);  
    10.     for(RT ll i=2;i<=m;i++)  
    11.     {  
    12.         if(n%i==0)  
    13.         {  
    14.             int tmp=1;num++;  
    15.             while(n%i==0)  
    16.             {  
    17.                 tmp*=i;  
    18.                 n/=i;  
    19.             }  
    20.             ans+=tmp;  
    21.         }     
    22.     }  
    23.     if(num==0)ans=n+1;  
    24.     else if(num==1||n!=1)ans+=n;  
    25. }  
    26.   
    27. int main()  
    28. {  
    29.     while(scanf("%lld",&k)&&k)  
    30.     {  
    31.         divide(k);++cas;  
    32.         printf("Case %lld: %lld ",cas,ans);      
    33.     }  
    34. }     
  • 相关阅读:
    竞赛中遇到的英文单词集锦
    #复习 搜索与图论:排列数字、走迷宫~ 20.8.20起
    #容斥原理 20.9.10
    #sort :快速排序、第k个数 20.09.12
    #STL #unordered_map : C++11 unordered_map详细介绍
    Java 面试必备(字符串专题)
    JAVA面试必备题(垃圾回收专题)
    Collection框架的结构(面试重点)
    CSS 层级样式表
    window搭建mongodb副本集
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/9859975.html
Copyright © 2011-2022 走看看