| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
tle的注意了#include <stdio.h>
#include <math.h>
long long X;
typedef struct{
long long value;
int count;
}Num;
Num Num1[6];//开到6足够了
int primernum=0;
void chuli(long long x)
{
int flag=0;
int i=2;
int max=ceil(sqrt(double(x)));
while(x>1)
{
if(i>max){Num1[primernum].value=x;Num1[primernum].count=1;primernum++;break;}//没有这个判断容易tle
flag=0;
if(x%i==0){flag=1;Num1[primernum].value=i;Num1[primernum].count=0;}
while(x%i==0){
x=x/i;
Num1[primernum].count++;
}
if(flag==1)primernum++;
if(i>2)i=i+2;
else i++;
}
}
int com(int n,int r)
{
if(n-r>r)r=n-r;
int i,j,s=1;
for(i=0,j=1;i<r;i++)
{
s*=(n-i);
for(;j<=r&&s%j==0;++j)s/=j;
}
return s;
}
int main() {
while(scanf("%lld",&X)!=EOF)
{
primernum=0;
chuli(X);
int sum=0;
int ans=1;
for(int i=0;i<primernum;i++)
{
sum+=Num1[i].count;
ans=ans*com(sum,Num1[i].count);
}
printf("%d %d\n",sum,ans);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator