题意:求第n个非完全 平方数m,并求 求和sqrt(i)(1<=i<=m)
分析:m-sqrt(m)<=n,,,解得:m<=2*n+1+sqrt(4*n+1);当m为完全平方数时,m--
求和过程:1+sqrt(2)+sqrt(3)+sqrt(4)+sqrt(5)+sqrt(6)+sqrt(7)+sqrt(8)+sqrt(9)+sqrt(10)+......+sqrt(m),
代码:
#include<iostream>
#include<cstdio>
#include<math.h>
using namespace std;
int main()
{
int T;
__int64 n;
scanf("%d",&T);
while(T--)
{
scanf("%I64d",&n);
__int64 m=(2*n+1+sqrt(4*n+1.0))/2;
if( (__int64(sqrt(m*1.0)))*(__int64(sqrt(m*1.0))) ==m)
m--;
__int64 ans=0;
__int64 temp=(__int64)sqrt(m*1.0);
for(__int64 i=1;i<temp;i++) //i也要用__int64,不然一直WA
{
ans+=i*((i+1)*(i+1)-i*i);
}
for(__int64 i=temp*temp;i<=m;i++)
ans+=temp;
printf("%I64d %I64d\n",m,ans);
}
//system("pause");
return 0;
}