zoukankan      html  css  js  c++  java
  • UVa 10791 Minimum Sum LCM【唯一分解定理】

    题意:给出n,求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小

    看的紫书---

    用唯一分解定理,n=(a1)^p1*(a2)^p2---*(ak)^pk,当每一个(ak)^pk作为一个单独的数的时候,和最小

    然后就有三种情况

    普通的,比如,2*3*3*5,sum=2+9+5=16

    只有1个因数的,比如32=2^5,sum=32+1;

    没有因数,自己本身是质数,sum=n+1;

    因为分解的时候是找到根号n的,比如21,最后还会剩下7,所以sum=sum+n

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath> 
     5 #include<stack>
     6 #include<vector>
     7 #include<map> 
     8 #include<set>
     9 #include<queue> 
    10 #include<algorithm>  
    11 using namespace std;
    12 
    13 typedef long long LL;
    14 const int INF = (1<<30)-1;
    15 const int mod=1000000007;
    16 const int maxn=100005;
    17 
    18 int main(){
    19     LL n;
    20     int kase=0;
    21     while(cin>>n&&n){
    22         LL m=sqrt(n);
    23         LL sum=0;
    24         LL ans=n;
    25         int cnt=0;
    26         for(int i=2;i<=m&&n!=1;i++){
    27             if(n%i==0){
    28                 cnt++;
    29                 LL tmp=1;
    30                 while(n%i==0){
    31                     tmp*=i;
    32                     n=n/i;
    33                 }
    34                 sum+=tmp;
    35             //    cout<<"sum="<<sum<<"
    ";
    36             //    cout<<"tmp="<<tmp<<"
    ";
    37             //    cout<<"n="<<n<<"
    ";
    38                 
    39             }
    40         }
    41         
    42         printf("Case %d: ",++kase);
    43         
    44         if(cnt==0||(cnt==1&&n==1)) cout<<1+ans<<"
    ";
    45         else if(n!=1) cout<<sum+n<<"
    ";
    46         else cout<<sum<<"
    ";
    47     }
    48     return 0;
    49 }
    View Code
  • 相关阅读:
    模板语言的作用及实例
    模板语言
    轮播图实例
    render,render_to_redponse,locals,redirect重定向
    setting中三个重要参数
    python中的Celery基本使用
    python中的Redis基本使用
    DRF之JWT认证
    DRF之过滤排序分页异常处理
    DRF之权限和频率限制
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4450144.html
Copyright © 2011-2022 走看看