| ||||||||||
| 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 | |||||||||
我疯掉了,怎会WA的,难道是超出int范围导致错误?#include <iostream>
#include <cmath>
using namespace std;
int List[1000000],ListL;
int Ar[100],Value;
int n;
void test(int a,int b,int c)
{
int r;
for (r=b;r<ListL && List[r]*a<n;r++)
{
Value+=Ar[c]*((n-1)/(List[r]*a));
test(List[r]*a,r+1,c+1);
}
}
int main()
{
int i,n1;
Ar[1]=-1;
for (i=2;i<100;i++)
Ar[i]=Ar[i-1]*(1-i);
while (cin>>n && n)
{
Value=n-1;
ListL=0;
if (n%2==0) List[ListL++]=2;
n1=n;
while (n1%2==0)
n1/=2;
for (i=3;n1>1;i+=2)
if (n1%i==0)
{
List[ListL++]=i;
while (n1%i==0)
n1/=i;
}
test(1,0,1);
cout<<Value<<endl;
}
}
//WA
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator