HDU 4342 History repeat itself

来源:互联网 发布:linux配置编译环境 编辑:程序博客网 时间:2024/05/02 04:34

找到第N个 非平方数。

然后输出自然数中排第M,再输出1~M 所有数开平方取整的和。


注意输入虽然在2^31 。

但是会出现 相乘,数在 2^63之内。

然后就是用 lld% 会TLE。用 %I64d 就AC了。

非常忧伤。。。。

#include<cstdio>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<queue>#include<map>#include<stack>#include<iostream>#include<list>#include<set>#include<cmath>#define INF 0x7fffffff#define eps 1e-6using namespace std;int main(){    int t;    scanf("%d",&t);    while(t--)    {        long long n;        scanf("%I64d",&n);        long long tmp=0;        while(tmp*(tmp+1)<n)tmp++;        long long num=0;        long long sum=0;        num=n+tmp;        for(long long i = 1; i < tmp; i++)            sum += (1+2*i)*i;        sum = sum + (n+1-tmp*(tmp-1))*tmp;        printf("%I64d %I64d\n",num,sum);    }    return 0;}


0 0
原创粉丝点击