ACM HD215 七夕节

这题主要考算法,第一次用那个穷举,超时了,然后想到了下面的解法

#include<stdio.h>

int yzh(int a)
{
int i,j=1,k;
if(a<=3)
return 1;
k=a/2;
for(i=2;i<k;i++)
{
if(a%i==0)
{
j+=i;
k=a/i;
if(k>i)
{
j+=k;
}
}
}
return j;
}


int main()
{
int t,a;
scanf("%d\n",&t);
while(t--)
{
scanf("%d",&a);
printf("%d\n",yzh(a));
}
return 0;
}

你可能感兴趣的:(ACM HD215 七夕节)