HDU-1215-七夕节
http://acm.hdu.edu.cn/showproblem.php?pid=1215
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[500001];
void init()
{
int i,j;
memset(a,0,sizeof(a));
for(i=1;i<=500000;i++)
a[i]=1;
for(i=2;i<=250000;i++)
for(j=2;i*j<=500000;j++)
a[i*j]+=i;
}
int main()
{
int t,n;
init();
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",a[n]);
}
return 0;
}
HDU-1286-找新朋友
http://acm.hdu.edu.cn/showproblem.php?pid=1286
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[40000];
int main()
{
int i,j,t,n,ans;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(a,0,sizeof(a));
for(i=2;i<=n;i++)
if(n%i==0)
{
for(j=2;j<=n;j+=i)
a[j]=1;
}
ans=0;
for(i=2;i<=n;i++)
if(a[i]==0)
ans++;
printf("%d\n",ans+1);
}
return 0;
}
HDU-1999-不可摸数
http://acm.hdu.edu.cn/showproblem.php?pid=1999
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[1000001],b[1001];
void init()
{
int i,j;
for(i=1;i<=500000;i++)
for(j=2;i*j<=1000000;j++)
a[i*j]+=i;
for(i=2;i<=1000000;i++)
if(a[i]<=1000)
b[a[i]]=1;
}
int main()
{
int t,n;
init();
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
if(b[n]==1)
printf("no\n");
else
printf("yes\n");
}
return 0;
}