HDU-1215 七夕节 数论 唯一分解定理 求约数之和

题目链接: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
原文地址:https://www.cnblogs.com/tanglizi/p/9392661.html