UVA 10791 Minimum Sum LCM
2014-09-03 15:28
429 查看
唯一分解定理
把n分解为 n=a1^p1*a2^p2*...的形式,易得每个ai^pi作为一个单独的整数最优。
坑:
n==1 ans=2;
n因子种数只有一个 ans++;
注意溢出。
把n分解为 n=a1^p1*a2^p2*...的形式,易得每个ai^pi作为一个单独的整数最优。
坑:
n==1 ans=2;
n因子种数只有一个 ans++;
注意溢出。
#include <iostream> #include <cstring> using namespace std; typedef long long ll; ll ans=0; ll n; ll sign[100000]; ll pri[100000]; int tot; void getpri (){ memset (sign,0,sizeof sign); sign[0]=sign[1]=1; for (int i=2;i*i<100000;i++) if (!sign[i]) for (int j=i*i;j<100000;j+=i) sign[j]=1; tot=0; for (int i=2;i<100000;i++) if (!sign[i]) pri[tot++]=i; } ll solved (){ if (n==1) return 2; ll ans=0; int flag=0; for (int i=0;i<tot&&pri[i]*pri[i]<=n;i++){ ll temp=0; if (n%pri[i]==0){ temp=1; flag++; while (n%pri[i]==0){ temp*=pri[i]; n/=pri[i]; } } ans+=temp; } if (n!=1){ flag++; ans+=n; } if (flag<=1) ans+=1; return ans; } int main (){//int a=46341;cout<<a*a<<" "<<(1<<31)<<endl; int kase=0; getpri (); while (cin>>n&&n){ ans=solved (); cout<<"Case "<<++kase<<": "<<ans<<endl; } return 0; }
相关文章推荐
- UVa 10791 - Minimum Sum LCM
- uva 10791 Minimum Sum LCM ( 唯一分解定理 )
- UVA - 10791 - Minimum Sum LCM (数论相关!)
- Minimum Sum LCM 唯一分解定理+求质因数UVA - 10791
- uva 10791 Minimum Sum LCM(分解素因子)
- Minimum Sum LCM(uva 10791)
- UVa 10791 - Minimum Sum LCM 质因数分解加素数筛优化
- Minimum Sum LCM 唯一分解定理+求质因数UVA - 10791
- UVA - 10791 Minimum Sum LCM 分解质因子
- UVA 10791 Minimum Sum LCM(唯一分解定理)
- UVA 10791 - Minimum Sum LCM(坑)
- Minimum Sum LCM UVA - 10791——唯一分解定理
- uva 10791 Minimum Sum LCM(算术基本定理)
- UVa 10791 - Minimum Sum LCM 质因数分解加素数筛优化
- Minimum Sum LCM 唯一分解定理+求质因数UVA - 10791
- UVA 10791 Minimum Sum LCM
- Minimum Sum LCM 唯一分解定理+求质因数UVA - 10791
- UVA 10791 Minimum Sum LCM
- UVA 10791 - Minimum Sum LCM
- UVA 10791 Minimum Sum LCM(质因数分解+数学分析)