Number of Containers
Sample Input
2
1
4
Sample Output
0
4
题意:
这道题麻烦的就是理解题意。读清题目之后:f(a,b)=a/b-1。
所以F(n)=(n/1-1)+(n/2-1)+(n/3-1)+…+(n/n-1)=n/1+n/2+n/3+…+n/n-n
而n/1+n.2+…n/n可以通过公式计算出来。
#include<stdio.h>
#include<string.h>
#include<math.h>
#define ll long long
int main()
{
ll n,i;
int t;
scanf("%d",&t);
while(t--)
{
ll sum=0,ss;
scanf("%lld",&n);
int r=sqrt(n);
for(int i=1;i<=r;i++)
sum+=n/i;
for(int j=1;j<=r;j++)
sum+=j*(n/j-n/(j+1));
if(n/r==r)
sum-=r;
//sum求出的就是n/1+n/2+n/3+...n/n
printf("%lld\n",sum-n);
}
return 0;
}