题目类型: 数学推导
解法:
连续的两个数,判断时注意咯,0,1要单独处理,其他,只要落在k*(k+1)到(k+1)*(k+2),则看是否差值大于k+1,进行处理。。。。
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int c,i,j,k;
scanf("%d",&c);
for(i=0;i<c;i++)
{
long a,b,k=0,t;
scanf("%ld %ld",&a,&b);
long n =(b-a);
// scanf("%ld",&n);
if(!n) {printf("0/n");continue;}
if( n==1){printf("1/n");continue;}
t=(long)(sqrt(n)+0.5);
for(k=t-1;;k++)
{
if(k*(k+1)>=n)break;
}
if(k*(k+1)==n) {printf("%ld/n",2*k);continue;}
k=k-1;
t=n-k*(k+1);
if(t<=k+1){printf("%ld/n",2*k+1);continue;}
else printf("%ld/n",2*k+2);
}
return 0;
}