Solution
#include <stdio.h>
static int arr[1001];
int converter(int n,int sum)
{
sum+=n%2;
n=n/2;
if(n==0)
return sum;
else
return converter(n,sum);
}
void binary()
{
int i,t,j;
for(i=1;i<1001;i++)
{
if(arr[i]==0)
{
t=converter(i,0);
arr[i]=t;
for(j=2;i*j<=1001;j*=2)
arr[i*j]=t;
}
}
}
int main()
{
int t;
scanf("%d",&t);
binary();
while(t--)
{
int n,i,ans=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
ans+=arr[i];
printf("%d\n",ans);
}
return 0;
}
No comments:
Post a Comment