码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2421

时间:2014-09-13 22:42:06      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   for   div   sp   log   on   c   

由算术基本定理N=p1^e1*p2^e2....ps^es,可知一个素的因子个数为(e1+1)*(e2+1)*...*(es+1)。

而N的一人因子必定也有n=p1^k1*p2^k2。。。。*ps^ks的形式。因子个数形式同上。

而事实上,即是从ei中选取其中一些来充当k1。那么,所有的因子的个数之和必定是(1+2+...e1+1)*(1+2....e2+1)*...其实即是拆开相乘,相当于有各种组合。而

立方是积性的,所以先把(1^3+2^3+....(e1+1)^3)*(1^3+......)*.......

有公式

1^3+2^3+3^3+...+n^3=(1+2+3+...+n)^2

 

题目可解。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define LL __int64
using namespace std;
int pe[1000],np;
const LL MOD=10007;
int main(){
	int a,b;
	int kase=0;
	while(scanf("%d%d",&a,&b)!=EOF){
		np=0;
		for(int i=2;i*i<=a;i++){
			if(a%i==0){
				int c=0;
				while(a%i==0){
					 c++;
					 a/=i;
				}
				pe[np++]=c*b;
			}
		}
		if(a>1){
			pe[np++]=1*b;
		}
		LL ans=1;
		for(int i=0;i<np;i++){
			LL tmp=((((LL)2+(LL)pe[i]))*((LL)pe[i]+(LL)1)/2)%MOD;
			ans=(ans*((tmp*tmp)%MOD))%MOD;
		}
		printf("Case %d: %I64d\n",++kase,ans);
	}
	return 0;
}

  

HDU 2421

标签:blog   io   os   for   div   sp   log   on   c   

原文地址:http://www.cnblogs.com/jie-dcai/p/3970377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!