| ||||||||||
| 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 | |||||||||
高手指点,奇怪呀,为什么我的是O(N^2) 人家的也是这个,人家的都能过,怎么我的就会超时呢?#include <stdio.h>
#include <math.h>
int a[500000];
int b[200000];
int index_b=0;
int index;
void isp(int num)
{
index=1;
a[0]=5;
for(int i=9;i<=num;i=i+4)
{
int j;
for(j=0;j<index;j++)
{
if(i%a[j]==0)
break;
}
if(j==index)
{
a[index++]=i;
}
}
}
bool isInA(int num)
{
for(int i=0;i<index;i++)
{
if(num==a[i])
return true;
}
return false;
}
void isHpr(int num)
{
for(int i=0;i<index;i++)
{
if(num%a[i]==0&&num!=a[i]&&(num/a[i])%4==1)
{
b[index_b++]=num/a[i];
break;
}
}
}
int main()
{
int aa;
scanf("%d",&aa);
while(aa!=0)
{
isp(aa);
index_b=0;
int sum=0;
for(int i=25;i<=aa;i=i+4)
{
isHpr(i);
}
for(int j=0;j<index_b;j++)
{
if(isInA(b[j])==true)
{
sum++;
}
}
printf("%d %d\n",aa,sum);
scanf("%d",&aa);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator