题目链接:https://cn.vjudge.net/problem/HDU-1215
题意
中文题,自己去看吧,懒得写:)
思路
[Ans=prod sum p_i^j
]
唯一分解定理
关键在于求因子了,模版到时候整理
提交过程
AC |
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int factors[200][2], fsize;
void getFactors(int n){
fsize=0;
for (int i=2; i<=n; i++){
if (n%i==0){
factors[fsize][0]=i;
factors[fsize][1]=0;
while (n%i==0) factors[fsize][1]++, n/=i;
fsize++;
}
}
}
long long solve(int n){
long long ans=1;
getFactors(n);
for (int i=0; i<fsize; i++){
long long prev=1, sum=1;
for (int j=0; j<factors[i][1]; j++)
prev*=factors[i][0], sum+=prev;
ans*=sum;
}return ans-n;
}
int main(void){
int T, n;
scanf("%d", &T);
while (T--){
scanf("%d", &n);
printf("%d
", solve(n));
}
return 0;
}
Time | Memory | Length | Lang | Submitted |
---|---|---|---|---|
686ms | 1220kB | 640 | G++ | 2018-07-30 14:51:53 |