| ||||||||||
| 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 | |||||||||
why wa??#include <iostream>
using namespace std;
const int MAX=(1<<20)+10;
int c[MAX], vis[MAX];
__int64 a[MAX], jie[21];
void set()
{
int i, j, t, tag, k;
jie[0]=1;
for(i=1; i<21; ++i)
jie[i]=i*jie[i-1];
fill(a, a+MAX, 1);
for(i=2; i<2000; ++i)
{
if(!vis[i])
{
for(j=i; j<MAX; j+=i)
{
vis[j]=1;
t=j;
tag=0;
while(t%i==0)
{
t/=i;
tag++;
}
a[j]*=jie[tag];
c[j]+=tag;
}
}
}
for(i=2; i<MAX; ++i)
{
if(!vis[i])
{
vis[i]=1;
c[i]=1;
}
else vis[i]=jie[c[i]]/a[i];
}
}
int main()
{
set();
int i;
while(scanf("%d", &i)==1)
{
printf("%d %d\n", c[i], vis[i]);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator