| ||||||||||
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