hdu 4279

来源:互联网 发布:淘宝店铺首页全屏装修 编辑:程序博客网 时间:2024/05/01 03:55

http://acm.hdu.edu.cn/showproblem.php?pid=4279

按前n个数有多少个real number 打个小表

找规律,推公式

代码:

#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <iostream>#include <algorithm>#include <map>#include <set>#include <queue>using namespace std;long long solve(long long p){    if(p<6)    return 0;    if(p>=6&&p<8)    return 1;    long long k;    k=p/8;    long long sum=0;    long long num=(-1+sqrt(1-(4*(-2*k))))/2;    sum=(num*4+8)*(num-1)/2+2;    long long knum=p-num*(num+1)*4;    sum+=(knum/2);    //printf("%I64d %I64d %I64d\n",sum,num,knum);    if(knum>=(num*2+1)*2+2||knum==0)    return sum;    return sum+1;}int main(){    int T;    scanf("%d",&T);    while(T--)    {        long long left,right;        scanf("%I64d%I64d",&left,&right);        printf("%I64d\n",solve(right)-solve(left-1));    }}